Общие вопросы VCL
Следующий модуль строит дерево классов
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Для этого достаточно текущее разрешение экрана и в соответствии с ним изменить дескриптор иконки приложения. Естевственно, что Вам прийдётся создать в ресурсах новые иконки.
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Code: |
{ The example below demonstrates creating custom caret: }
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Memo1: TMemo; Image1: TImage; Edit1: TEdit; procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin CreateCaret(Memo1.Handle, Image1.Picture.Bitmap.Handle, 0, 0); ShowCaret(Memo1.Handle); end;
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin CreateCaret(Edit1.Handle, 0, 10, 4); ShowCaret(Edit1.Handle); end;
end.
{The form file source (*.dfm) }
object Form1: TForm1 Left = 192 Top = 107 Width = 544 Height = 375 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Image1: TImage Left = 12 Top = 4 Width = 16 Height = 16 AutoSize = True Picture.Data = { 07544269746D6170B6020000424DB602000000000000B6000000280000001000 0000100000000100100000000000000200000000000000000000100000000000 000000000000000080000080000000808000800000008000800080800000C0C0 C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000FF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7F 00000000FF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7F0000 0000FF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000 000000000000FF7FFF7FFF7F0000000000000000FF7FFF7FFF7FFF7F00000000 0000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F00000000 0000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000 0000000000000000FF7FFF7FFF7F00000000FF7FFF7FFF7FFF7F000000000000 00000000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000000000000000 00000000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000000000000000 000000000000000000000000FF7FFF7FFF7FFF7FFF7FFF7F0000000000000000 000000000000000000000000FF7FFF7FFF7FFF7FFF7F00000000000000000000 0000000000000000000000000000FF7FFF7FFF7FFF7F00000000000000000000 0000000000000000000000000000FF7FFF7FFF7F000000000000000000000000 00000000000000000000000000000000FF7F0000000000000000000000000000 0000} end object Memo1: TMemo Left = 12 Top = 36 Width = 149 Height = 149 Lines.Strings = ('Memo1') TabOrder = 0 OnMouseDown = Memo1MouseDown end object Edit1: TEdit Left = 220 Top = 60 Width = 121 Height = 21 TabOrder = 1 Text = 'Edit1' OnMouseDown = Edit1MouseDown end end |
Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
стиль WS_EX_TRANSPARENT
Стиль окна-формы указывается в CreateParams. Только вот когда перемещаешь его, фон остается со старым куском экрана. Чтобы этого не происходило, то когда pисуешь своё окно, запоминай, что было под ним,а пpи пеpемещении восстанавливай.
HDC hDC = GetDC(GetDesktopWindow()) тебе поможет..
Andrei Bogomolov
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Из TForm property не убиpал, но из TWinControl было дело. А дело было так:
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Именно так и происходит в Windows - посылаются оба сообщения. Для того чтобы обработать только какое-то одно событие необходимо чуть "задержать" выполнение OnClick. Сделать это можно следующим способом:
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Никак. DCU файлы разных версий Дельфи несовместимы. Нужны либо исходники компонентов, либо надо просить у разработчика компиляцию для текущей версии Дельфи.
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Invalidate весь объект перерисовывается заново; обычно перерисовывается только часть бывшая перед этим закрытой
Update незамедлительная перерисовка
Refresh Invalidate + Update
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Если добавить флаг csOpaque (непрозрачный) к свойству ControlStyle компонента
- то фон компонента перерисовываться не будет.
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Code: |
procedure ShadeIt(f: TForm; c: TControl; Width: Integer; Color: TColor); var rect: TRect; old: TColor; begin if (c.Visible) then begin rect := c.BoundsRect; rect.Left := rect.Left + Width; rect.Top := rect.Top + Width; rect.Right := rect.Right + Width; rect.Bottom := rect.Bottom + Width; old := f.Canvas.Brush.Color; f.Canvas.Brush.Color := Color; f.Canvas.fillrect(rect); f.Canvas.Brush.Color := old; end; end;
procedure TForm1.FormPaint(Sender: TObject); var i: Integer; begin for i := 0 to Self.ControlCount - 1 do ShadeIt(Self, Self.Controls[i], 3, clBlack); end; |
Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Здесь есть хитрость:
Нужно разместить все необходимые элементы управления в отдельной форме, которая должна отслеживать перемещение и изменение размеров основной формы. Данная форма будет всегда находится над областью заголовка основной формы.
Нижеприведенный проект включает в себя 2 формы и выпадающий список (combobox). После запуска программы список появляется в области заголовка главной формы. Два ключевых вопроса: 1) организация перехвата сообщения WM_MOVE главной формы; и 2) возвращение фокуса в главную форму после того, как пользователь нажмет на каком-либо элементе управления, способным иметь фокус (например, TComboBox, TButton и др.)
- Подробности
- Родительская категория: VCL
- Категория: Общие вопросы VCL
Страница 1 из 2