Конференция "KOL" » Динамические контролы и присвоение им процедур или функций [KOL&MCK]
 
  • митя (09.04.18 14:53) [0]
    Вобщем как присвоить динамически созданной кнопке событие 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]
    спасибо- буду разбирать
 
Конференция "KOL" » Динамические контролы и присвоение им процедур или функций [KOL&MCK]
Есть новые Нет новых   [134427   +26][b:0][p:0.003]