![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Высота и ширина PopUp`a [D6]
markers © (2005-10-20 17:09:00)Здраствуйте!
Что-то не могу разобраться, так узнать высоту и ширину попапа? Всё пересмотрел, может плохо смотрел? Подскажите плиз!
markers (2005-10-21 10:21:00) [1]Спасибо, вм ребята..... Это всё пригодиться, но до меня только что дошло, что есть путь проще Я юзаю TreeView, и у него есть такое свойство как попап, но у меня попап динамический (В зависимости от пункта) и я подумал, что событие ContextPopup с попапом раздельны (Не связаны)... Но к большому счастью это не там..... Так, что пускай лучше сам маздай всё считает..... Спасибо ещё раз!!! Рецепт пригодиться в любом случае!!!
markers (2005-10-21 09:58:00) [2]Хм, чем дальше в лес, тем больше бутерброды.... Ох уж этот масдай со своими заморочками..... Сенкс! Буду рыть...
ShiFT (2005-10-21 09:56:00) [3]
procedure TForm1.MenuItemClick(Sender: TObject);
var
r: TRect;
begin
Memo1.Lines.Clear;
GetMenuItemRect( Form1.handle, Popupmenu1.handle, 0, r);
Memo1.Lines.Add( 'Width = ' + IntToStr( r.Right - r.Left)); // Width = 68
Memo1.Lines.Add( 'Height = ' + IntToStr( r.Bottom - r.Top)); // Height = 17
end;
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
Form1.PopupMenu := PopupMenu1;
for i := 0 to PopupMenu1.Items.Count -1 do
Popupmenu1.Items[i].OnClick := MenuItemClick;
end;
Loginov Dmitry (2005-10-21 09:54:00) [4]Для TMainMemu функция GetMenuItemRect работает как надо, а для TPopupMenu нужно предварительно вызвать метод Popup и выбрать самому к.-л. пункт меню. Вот так.
markers (2005-10-21 09:46:00) [5]Кусок:
procedure TMainWindow.Button3Click(Sender: TObject);
var DepHeight:integer;
R:TRect;
LB:LongBool;
begin
LB:=GetMenuItemRect( MainWindow.handle, PopupMenu1.handle, 0, R);
ShowMessage(BoolToYesNo(LB)); //Возвращает да
Memo1.Lines.Clear;
Memo1.Lines.Add( 'Width = ' + IntToStr( r.Right - r.Left));
Memo1.Lines.Add( 'Height = ' + IntToStr( r.Bottom - r.Top));
end;
Delphi 6 SP2/Win XP SP2
markers (2005-10-21 09:46:00) [6]Кусок:
procedure TMainWindow.Button3Click(Sender: TObject);
var DepHeight:integer;
R:TRect;
LB:LongBool;
begin
LB:=GetMenuItemRect( MainWindow.handle, PopupMenu1.handle, 0, R);
ShowMessage(BoolToYesNo(LB)); //Возвращает да
Memo1.Lines.Clear;
Memo1.Lines.Add( 'Width = ' + IntToStr( r.Right - r.Left));
Memo1.Lines.Add( 'Height = ' + IntToStr( r.Bottom - r.Top));
end;
Delphi 6 SP2/Win XP SP2
markers (2005-10-21 09:43:00) [7]Сделал даже на клик кнопки другго нового попапа, всё-равно 0/0
Это уже становиться интересным:) В чём может быть проблема?
За пример спасибо!
markers (2005-10-21 09:40:00) [8]Ща попробую левую менюху сделать
markers (2005-10-21 09:38:00) [9]Width = 0
Height = 0
????????????????????
ShiFT (2005-10-21 09:33:00) [10]
var
r: TRect;
begin
GetMenuItemRect( Form1.handle, Popupmenu1.handle, 0, r);
Memo1.Lines.Clear;
Memo1.Lines.Add( 'Width = ' + IntToStr( r.Right - r.Left));
Memo1.Lines.Add( 'Height = ' + IntToStr( r.Bottom - r.Top));
end;
markers (2005-10-21 09:01:00) [11]Как ни пытаюсь, даёт противоречивые результаты, то в одной последовательности 0, то в другой последовательности очень большую цифру, подскажите плиз, (Почитал на мсдне)
Понял примерно так:
GetMenuItemRect(0,(Необходимо указать хендл менюхи, указываю большое число, аказываю хендл наследника итема даёт 0),0,Rec);
В чём я не прав?
Подскажите плиз?
Просто маленький пример!
markers (2005-10-20 18:20:00) [12]Что-то маленько не могу разобраться с параметрами команды GetMenuItemRect, а хелпа нет... То, что сделал выдаёт черезчёр огромные цифры, подскажите плиз
markers (2005-10-20 17:19:00) [13]Да PopUpMenu! Спасибо! Ща попробую!
clickmaker (2005-10-20 17:16:00) [14]"попап" - это PopupMenu?
GetMenuItemRect * Count