用Delphi建立一个程序除了VCL还有什么方法

用Delphi建立一个程序除了VCL还有什么方法,第1张

VCL,是 Visual Component Library 的缩写,即可视组件库,是 Delphi 的基本类库。

如果不使用 VCL ,可以使用纯 Win API 进行编程,包括自己写窗体消息处理等等,但感觉这样做没有什么意义。

我有做过,其实也挺简单的

所先,你先定义一个公共变量

var ImeName : String;

然后你可以在用户登入的时候 选择输入法

procedure TValidateFrmFormCreate(Sender: TObject);

var

i: Integer;

begin

Combobox1Clear;

for i := 0 to ScreenImesCount - 1 do//(呵呵,刷出当前计算机的输入法:)

begin

Combobox1ItemsAdd(ScreenImes[i]);

end;

Combobox1Text := ScreenImes[0];

end;

当用户选择完输入法后,给ImeName付值

PubUnitImeName := Combobox1Text;

然后遍滤 空件

在这边我只举一个例子

for i := 0 to selfComponentCount - 1 do

begin

if SelfComponents[i] is TEdit then

(Components[i] as TEdit)ImeName := PubUnitImeName;

if SelfComponents[i] is TMemo then

(Components[i] as TMemo)ImeName := PubUnitImeName;

end;

这样就可以了不明白的可以问我我都是这样做的,呵呵

函数形式 BOOL EnumWindows(WNDENUMPROC lpEnumFunc //callback function                   LPARAM lParam); //application defined value其中 WNDENUMPROC 是回调函数 回调函数中写自己想做的 *** 作 当调用EnumWindows的时候 每次遇到一个窗口 系统就调用一次你的WNDENUMPROC 然后把窗口句柄传给你 EnumWindows 函数成功则返回非 值  函数失败则返回 值  EnumWindowsProc 返回 值 同样导致函数EnumWindows 返回 值

另外 该函数不列举子窗口 除了几种拥有WS_CHILD 风格的系统所属窗口 MSDN The EnumWindows function does not enumerate child windows with the exception of a few top level windows owned by the system that have the WS_CHILD style 使用举例

先声明一个EnumWindowsProc 比如 BOOL CALLBACK EnumWindowsProc_ (HWND hwnd LPARAM lparam) ;

然后实现此函数 写入自己想做的事情 比如 BOOL CALLBACK EnumWindowsProc_ (HWND hwnd LPARAM lparam){ char lpWinTitle[ ];    ::GetWindowText(hwnd lpWinTitle );    CString m_strTitle;   m_strTitle Format( %s lpWinTitle);   if(m_strTitle Find( Internet Explorer )!= )    {  AfxMessageBox( 这是一个IE窗口! ) ; }     return TRUE ;}

然后就可以在其他地方调用EnumWindows的时候使用回调函数 比如 ::EnumWindows(EnumWindowsProc_ ) ;这样每当遇到IE窗口时 就会进行 提示 这是一个IE窗口! 的 *** 作

方法二

不用互斥对象

我们可以利用向系统添加全局原子的方法 来防止多个程序实例的运行 全局原子由Windows 系统负责维持 它能保证其中的每个原子都是唯一的 管理其引用计数 并且当该全局原子的引用计数为 时 从内存中清除 我们用GlobalAddAtom 函数向全局原子添加一个 个字节以内的字符串 用GlobalFindAtom来检查是否已经存在该全局原子 最后在程序结束时用GlobalDeleteAtom函数删除添加的全局原子 示例如下 Uses Windows const iAtom= SingleApp ; begin if GlobalFindAtom(iAtom)= then begin GlobalAddAtom(iAtom); Application Initialize; Application CreateForm(TForm Form ); Application Run; GlobalDeleteAtom(GlobalFindAtom(iAtom)); end else MessageBox( You can not run a second copy of this App mb_OK); end 利用全局原子的引用计数规则 我们还可以判断当前共运行了该程序的多少个实例 var i:Integer; begin I:= ; while GlobalFindAtom(iAtom)<> do begin GlobalDeleteAtom(GlobalFindAtom(iAtom)); i:=i+ ; end; ShowMessage(IntToStr(I)); end;

lishixinzhi/Article/program/Delphi/201311/24834

气泡法

var

i,j,k,temp:integer;

begin

for i:=1 to 总个数 do

begin

for j:=i+1 to 总个数 do

begin

if aa[j]>aa[j+1] then

begin

temp:=aa[j];

aa[j]:=aa[j+1];

aa[j+1]:=temp;

end;

end;

end;

k桶法,再想想

以上就是关于用Delphi建立一个程序除了VCL还有什么方法全部的内容,包括:用Delphi建立一个程序除了VCL还有什么方法、delphi的程序如何控制输入法、delphi中,让程序只运行一次的方法[3]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10122355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存