Общие вопросы
Автор: Lutfi Baran
Пример демонстрирует вывод теста случайным образом на форме под определённым углом. Добавляем в форму компонент TButton и в событие OnClick следующий код:
Code: |
procedure TForm1.Button1Click(Sender: TObject); var logfont: TLogFont; font: Thandle; count: integer; begin LogFont.lfheight := 20; logfont.lfwidth := 20; logfont.lfweight := 750; LogFont.lfEscapement := -200; logfont.lfcharset := 1; logfont.lfoutprecision := out_tt_precis; logfont.lfquality := draft_quality; logfont.lfpitchandfamily := FF_Modern; font := createfontindirect(logfont); Selectobject(Form1.canvas.handle, font); SetTextColor(Form1.canvas.handle, rgb(0, 0, 200)); SetBKmode(Form1.canvas.handle, transparent); for count := 1 to 100 do begin canvas.textout(Random(form1.width), Random(form1.height), 'Hello'); SetTextColor(form1.canvas.handle, rgb(Random(255), Random(255), Random (255))); end; Deleteobject(font); end; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Переопределите в подклассе TForm оконную процедуру WinProc класса. В примере оконная процедура переопределяется для того чтобы реагировать на сообщение WM_CANCELMODE, показывающее, что выполняется messagebox или какой-либо еще диалог.
Code: |
type TForm1 = class(TForm) Button1: TButton; procedure WndProc(var Message: TMessage); override; procedure Button1Click(Sender: TObject); private {Private declarations} public {Public declarations} end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WndProc(var Message: TMessage); begin if Message.Msg = WM_CANCELMODE then begin Form1.Caption := 'A dialog or message box has popped up'; end else inherited // <- остальное сделает родительская процедура end;
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Test Message'); end; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Перехватывать сообщение WM_SYSCOMMAND. Если это сообщение говорит о
минимизации или максимизации формы - пищит динамик.
Code: |
type TForm1 = class(TForm) private {Private declarations} procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; public {Public declarations} end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMSysCommand; begin if (Msg.CmdType = SC_MINIMIZE) or (Msg.CmdType = SC_MAXIMIZE) then MessageBeep(0) else inherited; end; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
How i can create a form and this form stay in another icon in task bar ? (Looks like a new aplication).
Как я могу создать форму, и эта форма пребывания в другой значок в панель задач ? (Выглядит как новый применение).
In private clause:
Code: |
type TForm1 = class(TForm) private { Private declarations } procedure CreateParams(var Params: TCreateParams); override; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Code: |
type //... private { Private declarations } procedure WMNCACTIVATE(var M: TWMNCACTIVATE); message WM_NCACTIVATE; end;
implementation
//...
procedure TForm1.WMNCACTIVATE(var M: TWMNCACTIVATE); begin inherited; if M.Active then caption:='Form active' else caption:='Form not active' ; end; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Code: |
uses Windows;
procedure PlaceMyMouse(Sender: TForm; X, Y: word); var MyPoint: TPoint; begin MyPoint := Sender.ClientToScreen(Point(X, Y)); SetCursorPos(MyPoint.X, MyPoint.Y); end; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Для этого можно воспользоваться API функцией GetCapture().
Code: |
procedure TForm1.FormDeactivate(Sender: TObject); begin ReleaseCapture; end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin If GetCapture = 0 then SetCapture(Form1.Handle); if PtInRect(Rect(Form1.Left, Form1.Top, Form1.Left + Form1.Width, Form1.Top + Form1.Height), ClientToScreen(Point(x, y))) then Form1.Caption := 'Мышка на форме' else Form1.Caption := 'Мышка за пределами формы'; end; |
Взято из https://forum.sources.ru
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
In FormShow:
Code: |
var RecS, RecL: TRect; begin RecS := Rect(Screen.Width, Screen.Height, Screen.Width, Screen.Height); RecL := ThisForm.BoundsRect; DrawAnimatedRects(GetDesktopWindow, IDANI_CAPTION, RecS, RecL); { ... } end; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Необходимо объявить обработчик события для WM_GETMINMAXINFO:
Code: |
... private {©Drkb v.3(2007): www.drkb.ru}
procedure WMGetMinMaxInfo(var Message : TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
А вот как выглядит сам обработчик:
procedure TForm1.WMGetMinMaxInfo(var Message : TWMGetMinMaxInfo); begin Message.MinMaxInfo^.ptMinTrackSize := Point(Width, Height); Message.MinMaxInfo^.ptMaxTrackSize := Point(Width, Height); end; |
Взято из https://forum.sources.ru
Примечание от Vit:
Начиная с Дельфи 5 появилось удобное свойство Constrains - специально для ограничесния минимальных и максимальных размеров...
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Code: |
protected procedure CreateParams(var Params: TCreateParams); override;
//...
procedure TForm.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); if Assigned(Application.MainForm) then begin Params.WndParent := GetDesktopWindow; Params.Style := WS_CHILD; end; end; |
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Эта подпрограмма сделает жизнь программиста намного легче. Она делает так, чтобы ваша программа корректно масштабировалась при ЛЮБОМ разрешении экрана. Обратите внимание на число 640. Дело в том, что я разрабатываю свои приложения при разрешении 640x480. Вы можете настроить подпрограмму на ваше экранное разрешение при разработке программ и больше не беспокоиться о всевозможных низких и больших разрешений ваших пользователей. Разместите в обработчике события формы (которую вы хотите автомасштабировать) OnCreate следующую строку:
- Подробности
- Родительская категория: TForm
- Категория: Общие вопросы TForm
Страница 1 из 2