Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.15;
Скачать: CL | DM;

Вниз

Приведение типов   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
14-46964
processor
2003-04-26 23:00
2003.05.15
Есть ли отличие процессоров AMD и Intel?


3-46568
dim-
2003-04-25 00:51
2003.05.15
ADO и Sql Server


11-46674
Sam Stone
2002-08-09 18:52
2003.05.15
TKOLLabel, цвет


1-46805
Yanis
2003-05-02 15:05
2003.05.15
Что за ошибка.


1-46722
Сергеич
2003-05-04 19:55
2003.05.15
ХЕЛП! Открытие файлов.