Форум: "KOL";
Текущий архив: 2015.02.08;
Скачать: [xml.tar.bz2];
Внизнайти контрол Найти похожие ветки
← →
Dy1 (2009-11-04 19:15) [0]на форме панели, на них по несколько контролов, нужно найти панель под курсором.
Контрол под курсором вероятно form.ControlAtPos(form.Position);
Вопрос: как узнать панель это или, например, метка на этой панели?
Теги использовать нежелательно - заняты.
← →
Jon © (2009-11-04 20:05) [1]label.parent ?
← →
Dy1 (2009-11-04 21:18) [2]а как узнать, что кликнули на label, а не на её панели?
← →
Jon © (2009-11-04 21:59) [3]I hope that I understand you correctly:
program Test;
uses
Windows, KOL;
var
Panel, Label1, Label2: PControl;
procedure DoClick(Dummy: Pointer; Sender: PObj);
begin
if PControl(Sender).Parent = Panel then
ShowMsg("Child:"+PControl(Sender).Caption,MB_OK)
else
ShowMsg("Panel",MB_OK)
end;
begin
Applet := NewForm(nil,"Test").SetClientSize(120,120);
Panel := NewPanel(Applet,esRaised).SetAlign(caClient).SetBorder(20);
Label1 := NewLabel(Panel,"LABEL1");
Label2 := NewLabel(Panel,"LABEL2").PlaceDown;
Label1.Color := clRed;
Label2.Color := clRed;
Panel.OnClick := TOnEvent(MakeMethod(nil,@DoClick));
Label1.OnClick := TOnEvent(MakeMethod(nil,@DoClick));
Label2.OnClick := TOnEvent(MakeMethod(nil,@DoClick));
Run(Applet);
end.
← →
Dy1 (2009-11-04 22:24) [4]интересно что делает IsControl :)
MCK
procedure TForm1.PopMenuNDelMenu(Sender: PMenu; Item: Integer);
var
cp: TPoint;
begin
windows.GetCursorPos(cp);
windows.ScreenToClient(Form1.Form.GetWindowHandle, cp);
if Form.ControlAtPos(cp.X, cp.Y, ???) ??? then
end;
← →
MTsv DN (2009-11-05 13:07) [5]USE_NAMES и по имени. Лично я использую префиксы (так сложилось): lbl, pnl, btn, tv, lv и т.д.
← →
Vladimir Kladov © (2009-11-05 16:59) [6]Или Tag.
← →
Dy1 (2009-11-05 19:27) [7]с {$DEFINE USE_NAMES} появляется 20 Identifier redeclared: "Name" в KOLEdb. Куда смотреть?
← →
MTsv DN (2009-11-05 21:11) [8]Смотри в код...
← →
Dy1 (2009-11-05 22:37) [9]все 20 указывают на строки вида "var I: Integer;", в этом модуле дефайнов нет. Я не понимаю что и где не так
← →
MTsv DN (2009-11-05 23:27) [10]> с {$DEFINE USE_NAMES} появляется 20 Identifier redeclared: "Name" в KOLEdb. Куда смотреть?
написано же "редикларейтед "Name"". Значит в KOLEdb тоже есть "Name". Переименуй его в объекте и во всем коде. Это же основы ООП...Наследование?
← →
MTsv DN (2009-11-05 23:29) [11]Там вообще везде одни Nam"ы...вот это и правь...
← →
Dy1 (2009-11-06 21:36) [12]в kol.pas примерно на 36200 строчке есть ф-я:
function TControl.ControlAtPos( X, Y: Integer; IgnoreDisabled: Boolean ): PControl;
var I: Integer;
C: PControl;
CR, VR: TRect;
begin
Result := nil;
CR := ControlRect;
if Windowed then
CR := MakeRect( 0, 0, 0, 0 );
X := X + CR.Left; // - R.Left;
Y := Y + CR.Top; // - R.Top;
for I := ChildCount { + MembersCount } - 1 downto 0 do
begin
C := Children[ I ]; //Members[ I ];
if C.Visible then
if (not IgnoreDisabled) or IgnoreDisabled and C.Enabled then
begin
VR := C.ControlRect;
if (X >= VR.Left) and (X < VR.Right) and
(Y >= VR.Top) and (Y < VR.Bottom) then
begin
Result := C;
Exit;
end;
end;
end;
end;
что там делает (not IgnoreDisabled) or IgnoreDisabled? Если нужно что-то одно, то что?
← →
Dy1 (2009-11-06 22:52) [13]свойство Name всегда пустое
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2015.02.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.001 c