如何判断一个窗口里是否存在dbgrid?
如何判断一个窗口里是否存在dbgrid?
[解决办法]
var i:Integer;begin for i:= 0 to Self.ControlCount - 1 do begin if Self.Controls[i] is TDBGrid then begin ShowMessage('ok'); Break; end; end;end;
[解决办法]
var bWinControlExists: Boolean;function EnumChildProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;var B: array[0..255] of Char;begin GetClassName(hwnd, @B[0], 256); if SameText(B, PChar(lParam)) then begin bWinControlExists := True; Result := False end else Result := Trueend;function WinControlExists(const AFormHandle: HWND; const AWinControlClass: string): Boolean;begin if not IsWindow(AFormHandle) then raise Exception.Create('请指定有效的窗口句柄!'); bWinControlExists := False; EnumChildWindows(AFormHandle, @EnumChildProc, Integer(PChar(AWinControlClass))); Result := bWinControlExists;end;procedure TForm1.Button1Click(Sender: TObject);begin if WinControlExists(Handle, 'TDBGrid') then ShowMessage('存在dbgrid') else ShowMessage('不存在dbgrid')end;