Страница 10 из 12
------------------------------------------------------------
Q-88: Как сохранить всю форму в файл (как Delphi в *.dfm)?
------------------------------------------------------------ constructor TForm1.Create(AOwner: TComponent); // override; var fname: String; begin { Для динамически создаваемых контролов, может требоваться RegisterClasses(..); } fname := FormFilename; if FileExists( fname ) then begin CreateNew(AOwner); ReadComponentResFile(fname, Self); end else inherited Create( AOwner ); end; procedure TForm1.FormCloseQuery( Sender: TObject; var CanClose: Boolean); begin WriteComponentResFile(FormFileName, Self); end; {Peter Below, Vladimir Titov} ------------------------------------------------------------
Q-89: Как отследить переход фокуса в приложении?
------------------------------------------------------------ procedure TForm1.AppControlChange(Sender: TObject); begin if Sender is TScreen then Caption := TScreen(Sender).ActiveForm.ActiveControl.Name; end; procedure TForm1.FormCreate(Sender: TObject); begin Screen.OnActiveControlChange := AppControlChange; end; Leonid Troyanovsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
> ------------------------------------------------------------
Q-90: Как назначить процедуру собственному пункту системного меню? ------------------------------------------------------------ const cm_mycommand = $00A0; procedure TForm1.FormCreate(Sender: TObject); var HSysMenu: HMENU; begin HSysMenu:=GetSystemMenu(Handle,FALSE); InsertMenu( HSysMenu, 0, MF_BYPOSITION or MF_STRING, cm_mycommand, 'MyString'); end; procedure TForm1.WMSysCommand (var Message: TWMSysCommand); // message WM_SYSCOMMAND; begin case Message.CmdType of cm_mycommand: ShowMessage('My Command'); else inherited; end; end; Leonid Troyanovsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
>
------------------------------------------------------------
Q-91: Какое сообщение надо отлавливать в Application.OnMessage для отслеживания клавиши Alt (vk_menu)
------------------------------------------------------------ WM_SYSKEYDOWN/WM_SYSKEYUP ------------------------------------------------------------
Q-92: Как поменять иконку и стpокy в заголовке консольного окна?
------------------------------------------------------------ procedure TForm1.Button1Click(Sender: TObject); var h : HWND; AIcon : TIcon; begin AllocConsole; SetConsoleTitle(PChar('Console Title')); Sleep(0); h := FindWindow(nil, PChar('Console Title')); AIcon := TIcon.Create; ImageList1.GetIcon(0, AIcon); SendMessage(h, WM_SETICON, 1, AIcon.Handle); AIcon.Free; end; Leonid Troyanovsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
> ------------------------------------------------------------
Q-93: Как избежать повторного запуска моего приложения?
------------------------------------------------------------ constructor TYourMainForm.Create(AOwner: TComponent); // override; var wndclass : String; PrevInstance : HWnd; begin wndclass := ClassName; PrevInstance := FindWindow(PChar(wndclass), nil); if PrevInstance <> 0 then begin ShowMessage(Format('Main form %s is already exist', [wndclass])); Application.Terminate; end else inherited Create(AOwner); end; Такое окно существует и в IDE (запускать придется из Explorer). Leonid Troyanovsky <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
> ------------------------------------------------------------
Q-94: Delphi 6 требует Proxies.pas?
------------------------------------------------------------ {$ifdef D_6_UP} // Это моя константа DesignIntf, DesignEditors, DesignWindows, DsnConst, {$else} DsgnIntf, {$endif} Eugene Mayevski <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
> ------------------------------------ Вопрос: Файл designeditors.pas использует 'proxies' в uses. Исходный текст (proxies.pas) или откомпилированный модуль (proxies.dcu) нигде не находится ни на моем жеском диске ни на D6 Pro CD.. Просто реорганизуйте ваш проект на использование runtime пакетов и добавьте "DesignIDE" к вашемк списку runtime пакетов. Proxies находится здесь, и вам не нужен исходный текст вообще. Почему это сделано? Просто доя уверенности, что вы не сможете распространять design time части (property editors, component editors), это запрещено по личензии. DesignIDE.bpl не является свободно распространяемым, вы имеете право использовать его только на машине на которой установлена Delphi, подобно Component libraries. forums.borland.com |