Panel, ToolBar, CoolBar
Code: |
procedure TForm1.Button1Click(Sender: TObject); var Bm1: TBitmap; Bm2: TBitmap; begin Bm1 := TBitmap.Create; Bm2 := TBitmap.Create; Bm1.LoadFromFile('c:\download\test.bmp'); Bm2.Width := Bm1.Width; Bm2.Height := Bm1.Height; bm2.Canvas.Brush.Color := CoolBar1.Color; bm2.Canvas.BrushCopy(Rect(0, 0, bm2.Width, bm2.Height), Bm1, Rect(0, 0, Bm1.width, Bm1.Height), ClWhite); bm1.Free; CoolBar1.Bitmap.Assign(bm2); bm2.Free; end; |
- Подробности
- Родительская категория: VCL
- Категория: Panel, ToolBar, CoolBar
Автор: Ray Konopka
Следующий небольшой компонент представляет собой панель, содержащую другую, вложенную панель. Во вложенной панели могут быть размещены другие компоненты, читаться они будут правильно. Ключевым моментом здесь является перекрытие методов WriteComponents и ReadState.
- Подробности
- Родительская категория: VCL
- Категория: Panel, ToolBar, CoolBar
Привожу исходный код для создания панелей с изменяющимися размерами. Воровняйте панель по области клиента свойством alClient, расположите на ней несколько элементов управления и посмотрите как меняются размеры во время изменения размера формы при выполнении программы. Можно расширить код и запретить изменения размеров во время проектирования, но это я оставляю для вас. Данная технология может и не идеальна, поскольку я накропал код за считанные минуты, но для выполнения моих задач этого достаточно.
- Подробности
- Родительская категория: VCL
- Категория: Panel, ToolBar, CoolBar
Code: |
unit Unit1; {©Drkb v.3: www.drkb.ru}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, XPMan;
type TForm1 = class(TForm) Panel1: TPanel; XPManifest: TXPManifest; procedure FormCreate(Sender: TObject); end;
var Form1: TForm1;
implementation
{$R *.dfm}
uses Themes;
type TMyPanel = class(TPanel) public constructor Create(AOwner: TComponent); override; end;
{ TMyPanel }
constructor TMyPanel.Create(AOwner: TComponent); begin inherited Create(AOwner);
if ThemeServices.ThemesEnabled then ControlStyle := ControlStyle - [csParentBackground] + [csOpaque]; end;
procedure TForm1.FormCreate(Sender: TObject); var R: TRect; begin with TMyPanel.Create(Self) do begin Parent := Self; Color := clGreen; R := Panel1.BoundsRect; R.Left := R.Left + 300; R.Right := R.Right + 300; BoundsRect := R; end; end;
end.
|
- Подробности
- Родительская категория: VCL
- Категория: Panel, ToolBar, CoolBar
Кто-нибудь пробовал создать форму, подобную "отстегивающимся" панелькам (FreeDoc)? Я попробовал и вот что получилось...
Код требует использования некоторых функций WinAPI. Описание всех WinAPI функций доступны при нажатии F1 (электронная справка)...
Ну а теперь попробуем это создать (весь код занимает около 100 строчек)...
Ход работы:
- Подробности
- Родительская категория: VCL
- Категория: Panel, ToolBar, CoolBar
Для создания панелей в двумя полосами слева, которые можно двигать друг относительно друга, используют компонент ControlBar (вкладка Additional), на котором обычно размещают один или несколько ToolBar (вкладка Win32). Чтобы сделать возможным "вытаскивание" панели из ControlBar нужно написать следующий код:
- Подробности
- Родительская категория: VCL
- Категория: Panel, ToolBar, CoolBar