Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Динамические контролы и присвоение им процедур или функций [KOL&MCK]


митя   (09.04.18 14:53

Вобщем как присвоить динамически созданной кнопке событие OnClick ?
Спасибо заранее


Redmond   (09.04.18 15:55[1]

Так же как и не динамически созданной. У объектов есть свойства вида On*.
DynButton.OnClick:=OnButton1Click;


митя   (09.04.18 16:24[2]

Пример в проекте покажите пожалуйста


RusSun ©   (09.04.18 21:14[3]

program Project1;

uses kol,KOLCCtrls,messages;

{$R *.res}
var
form:PControl;
TrackBar8:PTrackbar;
CtrlList:PList;

procedure MouseDown(dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
begin

 if (Mouse.Button = mbLeft) then Begin
   PControl(sender).SetAlign ( caClient ).CenterOnParent.Tabulate;  //CtrlList.Items[j]
   PControl(sender).BringToFront;
   PControl(sender).Caption:='Click In ';
                                   End
                              else
// (Mouse.Button = mbRight)
                              begin

   PControl(sender).SetAlign ( caNone );
//    это вместо  Align:= alCustom;
   PControl(sender).SetSize(95,56).SetPosition(10+(PControl(sender).Tag-1) * 98,20).SetBorder( 2);
   PControl(sender).Caption:='Click Out '
                              end;
Mouse.StopHandling := TRUE;
end;
procedure MouseUP(dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
begin

// PControl(sender).SetAlign ( caNone );
// PControl(sender).SetSize(95,56).SetPosition(10+(TrackBar8.Position - 1) * 98,20).SetBorder( 2);

end;

procedure TrackBar8Change(Dummy: Pointer;Sender: PTrackbar; Code: Integer);
var i:Integer; //локальным не показывает изменение I -счётчик цикла
begin
form.Caption:='TrackBarPosition '+int2str(TrackBar8.Position);// +' счётчик цикла '+int2str(i);

if TrackBar8.Position = CtrlList.Count then  Exit;
if TrackBar8.Position < CtrlList.Count then
                                                   begin
 //  Уменьшилось
   for i := CtrlList.Count - 1 downto TrackBar8.Position do begin
                                                           PObj(CtrlList.Items[i]).Free;
                                                           CtrlList.Delete(i);
                                                             end;
                                                  end else
 // Увеличилось
 for i := CtrlList.Count to TrackBar8.Position-1 do begin

  CtrlList.Add(NewPanel(form,esRaised).SetSize(95,56).SetPosition(10+(TrackBar8.Position - 1) * 98,20).SetBorder( 2));//.SetSize(20,0).SetPosition(100,(i - 1) * 25));
 PControl(CtrlList.Items[i]).OnMouseDown:=TOnMouse(MakeMethod(nil,@MouseDown));
 PControl(CtrlList.Items[i]).Tag:=TrackBar8.Position;//цепляем чтобы различать их :)

                                                    end;
form.Update;
form.Invalidate
  end;

procedure FormCreate(Sender: PObj); // ,trbNoBorder
begin
   CtrlList:= NewList;
  // msgok('was created')
end;

Begin                                  //,trbNoBorder     .SetClientSize( 578, 309 )
form:=NewForm(Applet,'Баттон трак бар').CenterOnParent.Tabulate;
TrackBar8 := PTrackbar( NewTrackBar( form, [trbAutoTicks,trbEnableSelRange],
TOnScroll(MakeMethod(nil,@TrackBar8Change))).SetSize( 537, 45 ));

TrackBar8.RangeMax :=7;
 TrackBar8.RangeMin:=0;
  TrackBar8.TickFreq:=1;
  TrackBar8.SetAlign ( caBottom );
TrackBar8.Perform( WM_SETFOCUS, 0, 0);
//иначе не хочет)
//.centeronparent.Tabulate;
//область для работы

Applet := NewApplet('');
FormCreate(nil);
form.Text:='';
Run(form);

end.


митя   (11.04.18 20:56[4]

спасибо- буду разбирать


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо