我爱builder

C++Builder 程序员博客

请问用 CB实现对数据库实现同时向两个 数据库写数据,不是 两张表,是两 个 数据库名
例如:its
    itses
我用oracle数据库比较多。希望能给点指引,有代码更好,
我不知道该向什么方向出发,是数据库的问题吗?用触发器还是BC代码线程处理。
本人刚学编程,对面向对象的过程和写程序的结构不是很清除。希望指点。

用2个ADOConnection连接2个数据库,分别操作,不就得了

  • Filed under: C++ Builder
  • 请问用 CB实现对数据库实现同时向两个 数据库写数据,不是 两张表,是两 个 数据库名
    例如:its
        itses
    我用oracle数据库比较多。希望能给点指引,有代码更好,
    我不知道该向什么方向出发,是数据库的问题吗?用触发器还是BC代码线程处理。
    本人刚学编程,对面向对象的过程和写程序的结构不是很清除。希望指点。

    该回复于2008-07-21 09:10:08被版主删除

    用两个SQL语句就可以了
    insert into its.表名 values()
    insert into itses.表名 values() 

    可以用两个线程分别对不同的数据库操作

    两个SQL语句

    需要放两个连接组件,如果是一个的话需要写完一个,切换数据库连接再写另一个。

  • Filed under: C++ Builder
  • 编写一个计费程序,在进程被中断的时候,电脑必须能自动关机.
    设计思路:
      编写一个钩子程序A,在winlogon启动的时候随着启动,A监控计费程序B是否在执行,如果B 没有运行,则自动启动B,如果运行B失败,则关机.
    如何编写A程序,使得a进程不会被其他程序(类似360等程序)终止进程?

    可以参考某些流氓软件的做法,使用守护进程,不过貌似不太正规。

    像这样的程序应该运行在专门的服务器上,时刻在线,保护不受其他程序的影响。

    做一个服务程序吧,普通的应用程序很容易被kill的,双进程守护的有些浪费系统资源。

    后台驱动程序+前台应用程序,
    只是这样应用又是为了什么,这么重要的程序用专用的服务器不可以吗?

    我是想写一个dll,在启动winlogon的时候自动加载,普通杀进程的方法不能杀掉这个进程,可行吗

    如果直接在windows任务管理器里直接关闭进程的话, 不会触发close事件,请问如何才能使其触发呢?

    使用CreateProcess做个监控软件,资料网上有的

  • Filed under: C++ Builder
  • 一个程序A在运行,在定时器中设置定时,每隔5分钟提示一个信息,如何让这个提示信息窗口显示在最前面?
    用了一下方法都不行,有什么办法?

    BringWindowToTop(Application->Handle);

          SetWindowPos(Application->Handle,Application->Handle,1,1,800,600,0);

          LPDWORD lpdwProcessId;
          DWORD ll = GetWindowThreadProcessId(GetForegroundWindow,NULL);
          AttachThreadInput(ll,GetCurrentThreadId(),True);
          SetForegroundWindow(tmp->Handle);
          SetFocus();
          ll = GetWindowThreadProcessId(GetForegroundWindow(),NULL);
          AttachThreadInput(ll,GetCurrentThreadId(),False);

    SetWindowPos(Application->Handle,HWND_TOP,1,1,800,600,SWP_SHOWWINDOW);

    不行呀,执行之后只会在底下的任务栏中中闪烁,无法弹出窗口

    WIN  API  函数  SetForegroundWindow  把窗口拿到最前面 
    BOOL  SetForegroundWindow

        HWND  hWnd  //  handle  of  window  to  bring  to  foreground 
    ); 

    我的环境是xp,用SetForegroundWindow也不行呀

    那直接用BringToFront();

    ShowWindow可以试一下

    ShowMessage("提示在最前面");

    Form1->FormStyle=fsStayOnTop;

    把你要弹出的窗体ShowModel不行嘛

    SetParent试试

    很简单嘛

    如下:

    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
        Form2->Show();
        Form2->BringToFront();
    }

    如果想显示后再隐藏,可以在Form2->BringToFront(); 后再隐藏。

    该回复于2008-07-19 16:09:45被版主删除

  • Filed under: C++ Builder
  • 学了点VC++的东西,就把C++的给忘掉了。惭愧。

    我写了一个求解线性方程组的程序,由于方程组的维数不确定,于是想到用参数传递。
    void LinearFunction(double **param,double *result, int length);

    但是问题是当我用了一个数组传递给param时,编译器显示不能完成从a[6][7]到p的转换?这是为什么?

    应该怎么办呀?如果将**param改成数组形式,那维数就固定了,不能变了。

    请教大家有什么好办法?谢谢!

    double **p;
    double a[6][7];

    p与a都是双层指针
    应该可以互通才对

    p = a;

    在另外一个帖子里给你回复了。

  • Filed under: C++ Builder
  • 如题,想用C++Builder的chart控件画出Y=AX+B这样的函数直线,A,B已知.
    请指点。

    上面少了
    x=10;  //终点
    y=A*x+B;

    如果你要显示X座标:
      const A=10,B=20;
      int x,y;
      for(x=1;x <10;x++)  //起点/终点/步长可自己定,可用double

      {
          y=A*x+B;
          Series1->Add(x,y,clRed);
      }

    学习!

    呵呵,谢谢各位。

  • Filed under: C++ Builder
  • 如果派生OpenDialog无法达到这个效果,需要自己从头实现的话,我想请问左侧列表和上面的directory combobox是怎么实现。

    而且我看他这个左侧列表和系统默认的opendialog的左侧列表还不一样。

    请各位赐教。

    引用 1 楼 akirya 的回复:
    这个都是自己实现的东西,不是打开对话框

    但是它的左侧栏和directory combobox都和系统的opendialog一模一样,我想知道是怎么实现的

    左边也是仿照,一样的。

    引用 3 楼 lwqcny 的回复:
    左边也是仿照,一样的。

    明显是仿照的,但是我想知道怎么获取这五个按钮指向的路径和其图标还有名字

    这些东西应该是系统内置的,程序只是用一个api将其取出而已.

    自己贴几个BUTTON,这些都是系统路径而已

    自己看了看自带的shellctrls源码,大致明白了,求人不如求己啊
    要知道这种系统路径的指向看看对CSIDL的介绍就行了

    还是散分吧……….

  • Filed under: C++ Builder
  • 初学Borland C++,想编程实现拖曳一个Main窗口时,让另一个message窗口跟随其移动,两个窗口在拖曳过程中保持左右并排。两个窗口都是Form,且二者没有父子关系。我一开始打算在Main窗口的OnMouseDown中调整message窗的top和left,但是运行之后,发现无论鼠标如何点击,都无法进入OnMouseDown函数中。请问各位大虾,这是怎么回事呢?应该如何实现拖曳跟随呢?先行谢过各位了~~

    protected:
        virtual void __fastcall WndProc(Messages::TMessage &Message);

    void __fastcall TForm1::WndProc(Messages::TMessage &Message)
    {
        TForm::WndProc(Message);

        if(Message.Msg == WM_MOVING)
        {
            Form2->Top = Top;
            Form2->Left = Left + Width;
            Form2->Show();
        }

    }

    谢谢二位的指点。现在我想加上如下的效果:拖曳Main窗口,Message 窗口跟随(已经能够很好的实现了);让Message窗口在离Main窗口足够近的地方时自动靠拢对齐。
    不过按照闲云野鹤兄的方法做呢,在拖动Message窗口靠近Main窗时,容易发生Message窗闪烁的现象。我想,如果能够在标题栏上对MouseUp进行响应就好了。不知道有没有这样的方法呢?谢谢!

    响应 WM_NCLBUTTONDOWN

    呃 ,该是 WM_NCLBUTTONUP

  • Filed under: C++ Builder
  • rt

    QuickRep

    标题栏重复
    ==========

    每页一次还是每页多次?

    1次和多次的解决都要

    晕,楼主就不能一次把问题说明白,这样回答问题感觉有点累!

    貌似默认就是每页一次,要想每页多次看楼主的要求,要是每条记录都显示一个标题栏,那就将标题栏一起放到detail栏里。

  • Filed under: C++ Builder
  • 我现在已经实现了将选中的彩色jpg图片在TImage中显示,请问如何将选中的彩色jpg图片转换成灰阶图片并在TImage中显示?急盼各位高手的回复!先谢了!

    以上是Bitmap格式,你可先将JPG转成Bitmap再调用函数

    C/C++ code
    //————————————————————————— #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include <jpeg.hpp> //————————————————————————— #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //————————————————————————— __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Graphics::TBitmap *bmp = new Graphics::TBitmap(); TJPEGImage *jpg = new TJPEGImage(); try { jpg->LoadFromFile("D:\\VclLib\\GdiplusDemo\\Media\\100_0349.jpg"); bmp->Assign(jpg); bmp->PixelFormat = pf24bit; BYTE *p = (BYTE*)bmp->ScanLine[bmp->Height - 1]; int off = (((24 * bmp->Width + 31) & 0xffffffe0) >> 3) - bmp->Width * 3; for (int y = 0; y < bmp->Height; y ++, p += off) { for (int x = 0; x < bmp->Width; x ++) { int v = (117 * p[0] + 601 * p[1] + 306 * p[2] + 512) >> 10; *p ++ = v; *p ++ = v; *p ++ = v; } } // bmp->SaveToFile("d:\\tmp.bmp"); Image1->Picture->Assign(bmp); } __finally { delete jpg; delete bmp; } } //—————————————————————————

    C/C++ code
    private: // User declarations void __fastcall GrayIt(Graphics::TBitmap *bmp); //————————————————————————— void __fastcall TForm1::GrayIt(Graphics::TBitmap * bmp) { BYTE * ptr; int Gray; bmp->PixelFormat=pf24bit; for(int y = 0; y<bmp->Height;y++) { ptr=(BYTE*)bmp->ScanLine[y]; for(int x=0;x<bmp->Width*3;x+=3) { Gray=299*ptr[x+2]+587*ptr[x+1]+114*ptr[x]; ptr[x]=Gray/1000; ptr[x+1]=Gray/1000; ptr[x+2]=Gray/1000; } } } //————————————————————————— void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *bmp=new Graphics::TBitmap; bmp->Assign(Image1->Picture->Graphic); GrayIt(bmp); Image1->Picture->Assign(bmp); delete bmp; } //—————————————————————————

    //—————————————————————————
    #include <vcl.h>//试例原码
    #pragma hdrstop

    #include "Unit1.h"
    #include "math.h"
    #include <printers.hpp>
    //—————————————————————————
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //—————————————————————————
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //—————————————————————————

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
            Scale->ItemIndex = 0;
            PixelFormat->ItemIndex = 0;
            ColorSpace->ItemIndex = 0;
            Performance->ItemIndex = 0;
            OpenDialog1->Filter = GraphicFilter(__classid(TGraphic));
            FileListBox1->Mask = GraphicFileMask(__classid(TGraphic));

    }
    //—————————————————————————

    void __fastcall TForm1::FileListBox1Click(TObject *Sender)
    {
            Image1->Picture->LoadFromFile(FileListBox1->FileName);
            SetJPEGOptions(this);
    }
    //—————————————————————————
    void __fastcall TForm1::Exit1Click(TObject *Sender)
    {
            Close();
    }
    //—————————————————————————
    void __fastcall TForm1::Open1Click(TObject *Sender)
    {
            if (OpenDialog1->Execute()){
                    Image1->Picture->LoadFromFile(OpenDialog1->FileName);
                    SetJPEGOptions(this);
            }
    }
    //—————————————————————————

    void __fastcall TForm1::SetJPEGOptions(TObject *Sender)
    {
        bool isJpg;
        isJpg = (Image1->Picture->Graphic->ClassNameIs("TJPEGImage"));
        TJPEGImage *Jpeg;
        if (isJpg){
              Jpeg=(TJPEGImage *)Image1->Picture->Graphic;
              Jpeg->PixelFormat = TJPEGPixelFormat(PixelFormat->ItemIndex);//位
              Jpeg->Scale = TJPEGScale(Scale->ItemIndex); //比例
              Jpeg->Grayscale = bool(ColorSpace->ItemIndex); //色彩
              Jpeg->Performance = TJPEGPerformance(Performance->ItemIndex);  //速度
        }
        Scale->Enabled = isJpg;
        PixelFormat->Enabled = isJpg;
        ColorSpace->Enabled = isJpg;
        Performance->Enabled = isJpg;
    }

    .h文件
    //—————————————————————————
    #ifndef Unit1H
    #define Unit1H
    //—————————————————————————
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    #include <FileCtrl.hpp>
    #include <Dialogs.hpp>
    #include <Menus.hpp>
    #include <jpeg.hpp>
    //—————————————————————————
    class TForm1 : public TForm
    {
    __published: // IDE-managed Components
            TPanel *Panel3;
            TDriveComboBox *DriveComboBox1;
            TComboBox *Scale;
            TComboBox *PixelFormat;
            TComboBox *ColorSpace;
            TComboBox *Performance;
            TPanel *Panel1;
            TDirectoryListBox *DirectoryListBox1;
            TFileListBox *FileListBox1;
            TScrollBox *ScrollBox1;
            TImage *Image1;
            TMainMenu *MainMenu1;
            TMenuItem *File1;
            TMenuItem *Open1;
            TMenuItem *N2;
            TMenuItem *Exit1;
            TOpenDialog *OpenDialog1;
            void __fastcall FormCreate(TObject *Sender);
            void __fastcall FileListBox1Click(TObject *Sender);
            void __fastcall Exit1Click(TObject *Sender);
            void __fastcall Open1Click(TObject *Sender);
            void __fastcall SetJPEGOptions(TObject *Sender);
    private:
    public: // User declarations
            __fastcall TForm1(TComponent* Owner);
    };
    //—————————————————————————
    extern PACKAGE TForm1 *Form1;
    //—————————————————————————
    #endif

    我是个新手,第一次发帖子,没想到一天时间就有这么多热心的人提供帮助,我真是太感动了!
    这些Code我先回去试试,稍后再告诉大家问题是否得到了解决。谢谢了!

    其实,你也可以直接算出灰度,用三元色相加再除三,就是灰度值

    下面是核心语句

    void __fastcall TMainForm::BitBtn1Click(TObject *Sender)
    {
      Image->Picture->Bitmap->PixelFormat = pf4bit;
    }

    我用maozefa的算法实现了图片转成灰阶,但是算法我还是看不懂,能否可以请maozefa帮忙解释一下?谢谢!

    RGB颜色转灰度的经典公式是:
    nGray=0.299*R+0.587*G+0.114*B
    因为同样的单色G=255和B=255其亮度其实并不一样,所以(R+G+B)/3的方法不太准确.
    maozefa的算法效率比较高,公式是一样的.

    正如楼上说的,我的算法0.299*R+0.587*G+0.114*B,不过扩大了1024倍,转换为整数处理,最后右移10也就是除以1024还原。

    获益不浅,非常感谢!

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档