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

Вниз

TCheckBox.OnClick   Найти похожие ветки 

 
dmk ©   (2015-09-11 04:26) [0]

Всем привет! Если поместить TCheckBox в TValueListEditor как дочерний контрол, то сообщения от TCheckBox не поступают. Просто назначив обработчика OnClick не работает. Сделал наследника от TCheckBox. Вопрос конечно решен, но может есть способ попроще?

Вот код:
unit FM_test_02;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.ValEdit;

type
 TDmCheckBox = class(TCheckBox)
   private
     FOnClick: TNotifyEvent;
     procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
     property OnClick: TNotifyEvent read FOnClick write FOnClick;
   public

 end;

type
 TForm1 = class(TForm)
   ValueListEditor1: TValueListEditor;
   procedure FormShow(Sender: TObject);
   procedure CheckBoxClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 FCheckBox: TDmCheckBox;

implementation

{$R *.dfm}

procedure TDmCheckBox.WMLButtonUp(var Message: TWMLButtonUp);
begin
 inherited;
 if Assigned(FOnClick) then FOnClick(Self);
end;

procedure TForm1.CheckBoxClick(Sender: TObject);
begin
 FCheckBox.Checked := not FCheckBox.Checked;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 FCheckBox := TDmCheckBox.Create(nil);
 FCheckBox.Parent := ValueListEditor1;
 FCheckBox.OnClick := CheckBoxClick;
 FCheckBox.Caption := "TDmCheckBox";
 FCheckBox.Left := 3;
 FCheckBox.Top := 19;
 FCheckBox.Visible := true;
end;

end.

Delphi XE6


 
Юрий Зотов ©   (2015-09-11 14:39) [1]

http://www.cyberforum.ru/delphi-beginners/thread340882.html


 
dmk ©   (2015-09-11 17:14) [2]

Юрий Зотов ©   (11.09.15 14:39) [1]
Там код не рабочий. В самом конце признание ;)

На самом деле я гуглил хорошо. Все варианты или не рабочие или громоздкие (типа замены оконной процедуры). А использовать DrawFrameControl не вариант, т.к. при прокрутке надо следить за отрисовкой, а так дочерний контрол висит всегда где надо.
Ну и ладненько. Оставим наследника. Работает же ;)


 
sniknik ©   (2015-09-12 01:15) [3]

нормально внедряется (события проходят) только в оконные контролы, едит, мемо, дбгрид (инплейс едитор)...  у ValueListEditor-а оконный, виндовый закрыт чисто дельфевской прослойкой. видимо в этом дело, что то там не "пробросили".
а вот если положить сначала на "окно", будет работать, типа
CheckBox1.Parent:= Edit1;
CheckBox1.Left:= 3;
CheckBox1.Top:= 3;

Edit1.Parent:= ValueListEditor1;
Edit1.Left:= 3;
Edit1.Top:= 19;



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

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

Наверх





Память: 0.45 MB
Время: 0.001 c
8-1240992981
Diha
2009-04-29 12:16
2017.05.21
Воспройзведение видео с помощью Дельфи


8-1240901861
MathLamer
2009-04-28 10:57
2017.05.21
Быстрое преобразование Фурье 2D


8-1241899470
maxistent
2009-05-10 00:04
2017.05.21
Сжатие потокового аудио...


15-1462129379
DayGaykin
2016-05-01 22:02
2017.05.21
Безопасность Keepass 2


15-1461854802
Германн
2016-04-28 17:46
2017.05.21
Существует ли такая VM, которая знает что такое LPT-порт?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский