Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];

Вниз

SysColors   Найти похожие ветки 

 
Far   (2003-07-06 22:07) [0]

Уважаемые! Делаю PopUp-меню для настройки цветов. Но хотелось бы кроме их названий добавить в это меню еще и образцы этих цветов. Никак не могу решить эту задачу. Помогите!!!


 
Романов Р.В.   (2003-07-06 22:30) [1]

TMenuItem.OnDrawItem


 
Far   (2003-07-07 00:40) [2]

А можно подробнее. Потому что процедура:
procedure TForm1.ColorDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
var
R: TRect;
begin
R := ARect;
ACanvas.Brush.Color := clWhite;
ACanvas.FillRect(Rect(R.Left, R.Top, 16, 16));
end;
не дает результат...


 
Юрий Зотов   (2003-07-07 00:41) [3]

Не очень хороший, но все-таки пример.

type
TForm1 = class(TForm) // PopupMenu = PopupMenu1
PopupMenu1: TPopupMenu; // OwnerDraw = True
procedure FormCreate(Sender: TObject); // OnCreate
private
procedure AddMenuItem(const S: string);
procedure DrawMenuItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
procedure MenuItemClick(Sender: TObject);
end;

procedure TForm1.AddMenuItem(const S: string);
var
ColorValue: TColor;
Item: TMenuItem;
begin
ColorValue := StringToColor(S);
if ColorValue < 0 then // Только системные цвета
begin
Item := TMenuItem.Create(Self);
with PopupMenu1.Items do
try
Item.Caption := S;
Item.Tag := ColorValue;
Item.OnDrawItem := DrawMenuItem;
Item.OnClick := MenuItemClick;
PopupMenu1.Items.Add(Item);
Item.Name := Format("MenuItem%u", [IndexOf(Item)])
except
Item.Free;
raise
end
end
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
GetColorValues(AddMenuItem)
end;

type
TRGB = packed record
case Boolean of
True: (R, G, B, P: Byte);
False: (RGB: LongInt)
end;

procedure TForm1.DrawMenuItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
const
SelectedStyle: array[Boolean] of TFontStyles = ([], [fsBold, fsItalic]);
var
RGB: TRGB;
begin
with TMenuItem(Sender), ACanvas, Brush do
begin
Color := TColor(Tag);
RGB.RGB := ColorToRGB(Color);
with Font do
begin
Color := (255 - RGB.R) or (255 - RGB.G) shl 8 or (255 - RGB.B) shl 16;
Style := SelectedStyle[Selected]
end;
TextRect(ARect, 2, ARect.Top + 2, StripHotKey(Caption))
end
end;

procedure TForm1.MenuItemClick(Sender: TObject);
begin
ShowMessage(TMenuItem(Sender).Name)
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-55510
Ш-К
2003-07-04 16:50
2003.07.17
Скроллинг листбокса.


1-55629
yozch_
2003-07-03 22:58
2003.07.17
Jpeg в OpenPictureDialog


3-55411
vil
2003-06-23 12:52
2003.07.17
ListSourse в DBLookupComboBox


14-55792
Dimedrol
2003-06-30 16:53
2003.07.17
Как передать переменную в FastReport ?


14-55816
Dimaxx
2003-06-27 23:23
2003.07.17
У кого есть pas-исходники для работы с архивами?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский