Zmiana rodzica

0

Jak zmienić rodzica komponentu podczas działania programu?
np.
DC := TPanel.Create(Self);
DC.Parent := Self;

i teraz:
DC.Parent:= Panel1;
I wyskakuje błąd albo nic się nie dzieje.

W skrócie: Jak przenieś komponent z formularza na panel.

0

Jaki błąd wyskakuje? bo ja sprawdziałem i działa ładnie...

0

<font color="green">DC := TPanel.Create(Self);
DC.Parent := Self;</span>

Druga linijka jest już chyba niepotrzebna przy takim wywołaniu...

0

aaa wiem, jezeli DC nie jest zmienną globalną a nowego parenta przypisujesz w innej procedurce niż w której twozysz to rzeczywiście jest błąd... jak zadeklarujesz DC jako zmienną globalną to błędu nie będzie

0

Nie to nie oto chodzi.
Jak przenieś komponent np. Przycisk (TButton) z formularza (TForm) na panel.

Formularz ma przycisk ,a później ten przycisk pojawia się na panelu.

Coś takiego:
DC - to przycisk (TButton)
DC.Parent := Form1; //tu jest ok
Teraz podczas kliknięcia na nim:
DC.Parent := Panel1; //i tu jest błąd

HELP [???]

0

co kurde nie działa?? masz u kad który działa i nie mam problemów:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    procedure DCClick(Sender: TObject);
  end;

var
  Form1: TForm1;
  DC: TButton;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Parent:=Panel1;
end;

procedure TForm1.DCClick(Sender: TObject);
begin
  DC.Parent:=Panel1;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Dc:=TButton.Create(Self);
  DC.Parent:=Self;
  Dc.Top:=0;
  DC.Left:=80;
  DC.Caption:='autocreate button';
  DC.Visible:=True;
  DC.OnClick:=DCClick;
end;

end.

a oto form tegoż proga:

object Form1: TForm1
  Left = 192
  Top = 111
  Width = 870
  Height = 640
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnShow = FormShow
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 0
    Top = 0
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object Panel1: TPanel
    Left = 352
    Top = 24
    Width = 257
    Height = 41
    Caption = 'Panel1'
    TabOrder = 1
  end
end

i mi działa

0

ja nie wiem w czym jest problem... u mnie wystarczy tylko:

Button1.Parent:= Panel1;

pozdro.

1 użytkowników online, w tym zalogowanych: 0, gości: 1