C++Builder 程序员博客
26 Aug
如果窗体多了的话,自动创建的话效率会不会低?
设置个Button在运行时候创建好么?
若是程序窗体超多,代码中创建,运行完删除清出内存好。
否则,让程序默认启动吧。
仅仅个人看法。
<
建议数据模块(DataModule)和主窗体自动创建。其他的子窗体按需动态创建,并根据具体的需求,关闭后隐藏或销毁。
都没有问题
老妖得建议很中肯。
看楼主需要吧,我现在在做个界面 有个工具栏 点击工具栏按钮则出现相应的界面
楼主软件比较大的话 还是建议 动态创建
<
弱弱的问一下,如果子窗体的界面比较复杂,用代码创建可行吗???
<
多谢大家了,感觉上是这样的。可以结贴了!
16 Jul
//—————————————————————————
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//—————————————————————————
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall TForm1::PaintBox1Click(TObject *Sender)
{
POINT vertices[5];
vertices[0]=Point(0,0);
vertices[1]=Point(50,0);
vertices[2]=Point(75,50);
vertices[3]=Point(25,50);
vertices[4]=Point(0,0);//—————————————————————————
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//—————————————————————————
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall TForm1::PaintBox1Click(TObject *Sender)
{
POINT vertices[5];
vertices[0]=Point(0,0);
vertices[1]=Point(50,0);
vertices[2]=Point(75,50);
vertices[3]=Point(25,50);
vertices[4]=Point(0,0);
Canvas->Polyline(vertices,4);
}
//—————————————————————————
Canvas->Polyline(vertices,4);
}
//—————————————————————————
为什么不能运行?出现错误
麻烦哪位高手指点一下,谢谢!!
PaintBox1->Canvas->Polyline(Slice(vertices,4));
或者PaintBox1->Canvas->Polyline(vertices,5);
老兄,还是不行啊
出现同样的错误提醒!!!!
多谢指点!!!
解决啦
5 Jul
原因:对窗体设置 ShowWindow(Form3->Handle,SW_SHOWNOACTIVATE);点击右上角关闭窗体,没有响应。
另外,能不能设置Form3(弹出的窗口),只有关闭按钮,没有最大、最小化按钮。谢谢。
Form3的BorderIcons属性下的biSystemMenu为True就可以了
谢谢 reage_wang。
BorderIcons设置可以解决不显示最大化、最小化的问题。但窗体关闭无效的问题还是存在。
你有处理响应消息么onclick
ShowWindow(Form3->Handle,SW_SHOWNOACTIVATE);
这条指令是写在哪里,Form3是怎么产生的,能说清楚点吗?多贴出点你的代码说明
学习了
5 Jul
原因:对窗体设置 ShowWindow(Form3->Handle,SW_SHOWNOACTIVATE);点击右上角关闭窗体,没有响应。
另外,能不能设置Form3(弹出的窗口),只有关闭按钮,没有最大、最小化按钮。谢谢。
Form3的BorderIcons属性下的biSystemMenu为True就可以了
谢谢 reage_wang。
BorderIcons设置可以解决不显示最大化、最小化的问题。但窗体关闭无效的问题还是存在。
你有处理响应消息么onclick
ShowWindow(Form3->Handle,SW_SHOWNOACTIVATE);
这条指令是写在哪里,Form3是怎么产生的,能说清楚点吗?多贴出点你的代码说明
学习了
5 Jul
原因:对窗体设置 ShowWindow(Form3->Handle,SW_SHOWNOACTIVATE);点击右上角关闭窗体,没有响应。
另外,能不能设置Form3(弹出的窗口),只有关闭按钮,没有最大、最小化按钮。谢谢。
Form3的BorderIcons属性下的biSystemMenu为True就可以了
谢谢 reage_wang。
BorderIcons设置可以解决不显示最大化、最小化的问题。但窗体关闭无效的问题还是存在。
你有处理响应消息么onclick
ShowWindow(Form3->Handle,SW_SHOWNOACTIVATE);
这条指令是写在哪里,Form3是怎么产生的,能说清楚点吗?多贴出点你的代码说明
学习了
18 May
做一个小程序,想让程序开启后窗体不能移动,这要怎么实现。还有怎么样才能让程序开机自启动。请各位帮忙啊
1、想让程序开启后窗体不能移动
Form1->BorderStyle = bsNone ;
2、让程序开机自启动
把你的exe文件直接拖到開始->所有程序->启动 栏里即可
如果设为bsNone的话,整个边框就没了啊,这要怎么办的
.cpp加入
void __fastcall 你的窗口::WndProc(Message::TMessage &Message)
{
if(Message.Msg=WM.NCHITTEST)
{
return;
}
TForm::WndProc(Message);
}
.h加入
你的窗口类中
void __fastcallWndProc(Message::TMessage &Message);
试试看
自动启动 你可以写一下注册表 写到启动项里
23 Mar
创建一个Form默认为TForm1,继承为class TForm1 : public TForm
自定义一个类MyClass
想TForm1继承MyClass class TForm1 : public TForm,public MyClass
但是不行,说不是抽象的,难道不能这样继承?
反过来继承是可以的
MyClass : public TForm1
vcl 不支持多重继承
…用Pascal写的不支持….
换成接口试试
学习一下
我的理解是,是VCL就不支持,因为即使继承类用CB来写,你的基类也是Delphi的
TForm类是一个VCL类,它的最初定义为DELPHICLASS也就是BCB特有的__declspec(delphiclass)
看它的HELP
The delphiclass argument is used for declarations for classes derived from TObject. These classes will be created with the following compatibility:
Object Pascal-compatible RTTI
VCL (CLX)-compatible constructor/destructor behavior
VCL (CLX)-compatible exception handling
A VCL or CLX-compatible class has the following restrictions:
No virtual base classes are allowed.
No multiple inheritance is allowed except for the case described in Inheritance and interfaces.
Must be dynamically allocated by using the global new operator.
Must have a destructor.
Copy constructors and assignment operators are not compiler-generated for VCL-or CLX- derived classes.
A class declaration that is translated from Object Pascal will need this modifier if the compiler needs to know that the class is derived from TObject.
它兼容DELPHI(O-PASCAL)类,是不支持多种继承的
不过说到这里呢。 我觉得TForm 有没有继承的必要.它就是一个VIEW.
你要是定义好了你的程序的主要的VIEW风格,可以一个个继承过来. TForm TMainForm TStyleForm
等等.
你业务逻辑的 或者其他的就不要勉强到VIEW里面来了. 换个想法HAS-A呢。
在你的窗体里面执行一个业务逻辑的相关处理. 呵呵.
谢谢各位,我换了种思想,呵呵,结贴
26 Feb
我用SetLayeredWindowAttributes做了个半透明窗口.但是那个蓝色的边界线看着看不爽..
我想隐藏,或者取消那边框线..如何做到..
如果想实现鼠标抓出窗体任意一点移动窗体该如何实现…
每个问题40分..谢谢
BorderStyle 设置为bsNone
16 Feb
整个程序是这样的,主窗体上有个panel,然后动态生成窗体,这个窗体的父亲就是Panel,我这样写的
if (form == NULL)
{
form = new TInHandContractForm(Application);
form->Parent = pnlMother;
form->Align = alClient;
form->BorderStyle = bsNone;
form->Show();
}
else
{
form->BringToFront();
}
窗体关闭是在窗体上点击按钮,按钮里面的代码就是一个Close();
今天才发现虽然点击Close了,但是,这个窗体并没有真的关闭,里面的定时器竟然还在发送信息!
我怀疑是不是New窗体的时候出问题了?
整个程序不是MDI窗体
在窗口的onclose事件里写 Action = caFree;
是不是所有的窗体关闭的时候都要这样呢?ShowModal出的窗体为什么不用这样呢?
ShowModal出來的窗體也要這樣寫的
TForm *f = new TForm(Application);
你這里只是new出來
一般后面不寫delete 都在onclose里寫 Action = caFree;來銷毀這個Form
3 Feb