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]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)