Форум: "Основная";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];
ВнизПриведение типов Найти похожие ветки
← →
Vlad1 (2003-05-01 18:39) [0]У меня была такая задача: надо было отследить нахождение мыши над ComboBox. Как известно, у ComboBox"а нет события OnMouseMove. Мне пришла в голову мысль: а нельзя ли ему программно это событие добавить? Попробовал такой вариант:
</Tlistbox(ComboBox1).OnMouseMove:=Form1.OnMouseMove;
CODE>
Неожиданно сработало! Стал экспериментировать с другими компонентами. У LabeledEdit1"a нет свойства FocusControl (и у LabeledEdit1.EditLabel такого подсвойства тоже нет). ПопробовалTlabel(LabeledEdit1.EditLabel).FocusControl
Тоже сработало.
Вот пример работающей программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
Label1: TLabel;
ListBox1: TListBox;
Button2: TButton;
Edit1: TEdit;
Button3: TButton;
Button4: TButton;
Panel1: TPanel;
LabeledEdit1: TLabeledEdit;
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button1Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
procedure ComboMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ComboMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Caption:="Combobox";
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//Tlistbox(ComboBox1).OnMouseMove:=OnMouseMove;
TButton(ComboBox1).OnMouseMove:=OnMouseMove;
Tlabel(LabeledEdit1.EditLabel).FocusControl:=button3;//
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if sender is TComboBox then Caption:="Combobox"
else
Caption:="Form1"
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TLabel(Button1).caption:="кнопка";
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (sender is Tlabel)and(key="1") then caption:="label";
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
TEdit(Combobox1).Text:="Ну-ну";
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Tlabel(Form1).Caption:="любопытно";
Tform(label1).Caption:="м-да-а";
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
TMemo(edit1).Clear;
end;
end.
Вопрос: а как такое может работать?
← →
Vlad1 (2003-05-01 18:44) [1]Поправочка:
а вот этот кусок, естественно, не работает:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (sender is Tlabel)and(key="1") then caption:="label";
end;
(забыл стерерть!).
← →
Vlad1 (2003-05-01 18:52) [2]Добавление:
что касается procedure TForm1.ComboMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Caption:="Combobox";
end;
то это тоже нестёртый остаток от эспериментов (сначала в OnCreate было Tlistbox(ComboBox1).OnMouseMove:=ComboMouseMove;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c