TForm
Code: |
{©Drkb v.3: www.drkb.ru} showwindow(Application.handle, SW_HIDE); showwindow(Frorm1.handle, SW_HIDE); |
- Подробности
- Родительская категория: TForm
- Категория: Прячем форму
При создании окна обработчики событий выполняются в следующем порядке:
OnCreate
OnShow
OnPaint
OnActivate
OnResize
OnPaint (снова)
Copyright © 1996 Epsylon Technologies
Взято из FAQ Epsylon Technologies
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Code: |
procedure ShowMainForm; {©Drkb v.3www.drkb.ru} var hWnd, hCurWnd, dwThreadID, dwCurThreadID: THandle; OldTimeOut: DWORD; AResult: Boolean; begin ShowWindow(Application.Handle, SW_RESTORE); Application.MainForm.Visible := True; // Показываем главную форму
// Ставим нашу форму впереди всех окон hWnd := Application.Handle; SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @OldTimeOut, 0); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(0), 0); SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); hCurWnd := GetForegroundWindow; AResult := False; while not AResult do begin dwThreadID := GetCurrentThreadId; dwCurThreadID := GetWindowThreadProcessId(hCurWnd); AttachThreadInput(dwThreadID, dwCurThreadID, True); AResult := SetForegroundWindow(hWnd); AttachThreadInput(dwThreadID, dwCurThreadID, False); end; SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(OldTimeOut), 0); end; |
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Code: |
type TForm1 = class(TForm) procedure WndProc (var message: TMessage); override; private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WndProc (var message: TMessage); begin case message.Msg of WM_WINDOWPOSCHANGING: PWindowPos(Message.LParam)^.hwndInsertAfter:=HWND_BOTTOM; end; inherited; end; |
Автор: antonn
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Для начала необходимо установить свойство формы KeyPreview в True. А потом уже можно отлавливать "Esc":
Code: |
procedure TForm1.FormCreate(Sender: TObject); begin Form1.KeyPreview := True; end;
procedure TForm1.FormKeyPress (Sender: TObject; var Key: Char); begin if key = #27 then Close; end; |
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Code: |
library Form; uses Classes, Unit1 in 'Unit1.pas' {Form1}; exports CreateMyForm, DestroyMyForm; end. |
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Code: |
ModalForm := TModalForm.Create(Self); try ModalForm.ShowModal; finally ModalForm.Free; end; |
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Используйте функцию Windows API SetSysModalWindow(). Код ниже демонстрирует технологию работы с этой функцией. В любой момент времени может быть возможен только один модально-системны диалог, чей дескриптор возвращается функцией SetSysModalWindow(). Вам необходимо запомнить возвращаемую функцией величину для того, чтобы завершить показ диалога таким образом. Вот как примерно это должно выглядеть:
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Можно, но только во время загрузки приложения. Чтобы сделать это выберите "View->Project Source" и измените код инициализации приложения, так что порядок создания форм зависил от какого-то условия.
Примечание: Вам придется редактировать этот код, если Вы добавите в приложение новые формы.
Code: |
begin Application.Initialize; if < какое - то условие > then begin Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); end else begin Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm1, Form1); end; end. Application.Run; |
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Работает в 2k/XP:
Code: |
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); {©Drkb v.3(2007): www.drkb.ru} begin AnimateWindow(Handle, 500, AW_HIDE or AW_BLEND); end; |
Автор: p0s0l
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Просто замените конструктор Create класса Вашей формы.
Code: |
unit Unit2;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TForm2 = class(TForm) private {Private declarations} public constructor CreateWithCaption(aOwner: TComponent; aCaption: string); {Public declarations} end;
var Form2: TForm2;
implementation
{$R *.DFM}
constructor TForm2.CreateWithCaption(aOwner: TComponent; aCaption: string); begin Create(aOwner); Caption := aCaption; end;
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject); begin Unit2.Form2 := Unit2.TForm2.CreateWithCaption(Application, 'My Caption'); Unit2.Form2.Show; end; |
- Подробности
- Родительская категория: TForm
- Категория: Создание, закрытие и вызов форм
Страница 7 из 8