Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь есть возможность читать онлайн «Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Советы по Delphi. Версия 1.4.3 от 1.1.2001»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Советы по Delphi. Версия 1.4.3 от 1.1.2001», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Msg.Result := 1;

ActivePage := Pages[I];

Change;

Exit; // выход из цикла.

end;

inherited;

end;

procedure Register;

begin

RegisterComponents('Test', [TAPageControl]);

end;

end.

Panel

Создание панелей во время работы приложения

Delphi 1

…я могу просто догадываться, не видя ваш код, но вы установили у панелей свойство parent? Чтобы отобразить элементы управления на вашей форме, вам НЕОБХОДИМО вставить в обработчик события формы OnCreate следующие две строки:

MyPanel := TPanel.Create(Self);

MyPanel.Parent := Self;

PopupMenu

Вызов контекстного меню в позиции курсора II

Delphi 1

…вызов popup-меню связан с координатами экрана. Координаты, получаемые в вашем обрабочике события, вероятно относятся к объекту, который создал это сообщение. Для преобразования координат вам необходимо воспользоваться функцией ClientToScreen.

Вот пример вызова контекстного меню, вызываемого при щелчке правой кнопкой мыши на узле TTreeView. Этот пример не в точности отвечает на ваш вопрос, но у меня нет желания расчитывать wParams прямо сейчас. Я думаю вы можете воспользоваться предложенной мною идеей и развить ее в нужном направлении.

procedureTfrmExplorer.TreeViewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

varP : TPoint;

begin

if Button<>mbRight thenexit;

TreeMenu.AutoPopup := False;

ifTreeView.GetNodeAt(X,Y)<>NIL then begin

TreeView.Selected := TreeView.GetNodeAt(X,Y);

P.X := X;

P.Y:=Y;

P := TreeView.ClientToScreen(P);

TreeMenu.Popup(P.X,P.Y);

end;

end;

Иконки в PopupMenu

Delphi 2

typeTForm1 = class(TForm)

MainMenu1: TMainMenu;

File1: TMenuItem; /**** Элемент для Menu Bar ****/

Open1: TMenuItem; /**** Элемент для Menu File ****/

procedureFormCreate(Sender: TObject);

procedureFormShow(Sender: TObject);

private

{private declarations}

public

{public declarations}

Icn, Txt, MnuItm: TBitmap;

end;

procedureTForm2.FormCreate(Sender: TObject);

var

R: TRect;

HIcn: HIcon;

Ic: TIcon;

Index: Word;

FileName: PChar;

begin

/** Получаем иконку определенного приложения **/

Ic:=TIcon.Create;

Ic.Handle:=ExtractAssociatedIcon(Hinstance, /* задаем путь и имя файла */, Index);

/** Создаем для текста изображение **/

Txt:=TBitmap.Create;

withTxt do begin

Width:=Canvas.TextWidth(' Тест');

Height:=Canvas.TextHeight(' Тест');

Canvas.TextOut(0, 0, ' Тест');

end;

/** Копируем иконку в bitmap для изменения его размера. Вы не можете менять размер иконки **/

Icn:=TBitmap.Create;

withIcn do begin

Width:=32;

Height:=32;

Brush.Color:=clBtnFace;

Canvas.Draw(0, 0, Ic);

end;

/** Создаем окончательное изображение, куда мы помещаем иконку и текст **/

MnuItm:=TBitmap.Create;

withMnuItm do begin

Width:=Txt.Width+18;

Height:=18;

withCanvas do begin

Brush.Color:=clBtnFace;

Pen.Color:=clBtnFace;

Brush.Style:=bsSolid;

Rectangle(0, 0, Width, Height);

CopyMode:=cmSrcAnd;

StretchDraw(Rect(0, 0, 16, 16), Icn);

CopyMode:=cmSrcAnd;

Draw(16, 8-(Txt.Height div2), Txt);

end;

end;

end;

procedureTForm2.FormShow(Sender: TObject);

var

ItemInfo: TMenuItemInfo;

hBmp1 : THandle;

begin

HBmp1:=MnuItm.Handle;

withItemInfo do begin

cbSize := SizeOf(ItemInfo);

fMask := MIIM_TYPE;

fType := MFT_BITMAP;

dwTypeData := PChar(MakeLong(hBmp1, 0));

end;

/** Заменяем MenuItem Open1 законченным изображением **/

SetMenuItemInfo(GetSubMenu(MainMenu1.Handle, File1.MenuIndex), Open1.MenuIndex, true, ItemInfo);

end;

В меню существуют некоторые проблемы масштабированием и палитрой иконки. Я также ищу лучшее решение, но это все, что я вам могу сейчас дать.

Листинг был изменен для того, чтобы помещать иконки в «чЕкнутое» состояние меню (просто это делает Win95). Это позволяет вам иметь «чЕкнутое» и «нечЕкнутое» состояние.

unitUnit1;

interface

usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,ShellAPI;

typeTForm1 = class(TForm)

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Представляем Вашему вниманию похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Обсуждение, отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x