Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Изменение визуальной принадлежности компонента...


Автор: Aleks26 13.9.2010, 12:26
Если в программе во время выполнения я меняю указание визуальной принадлежности, к примеру, кнопки из формы в панель, как сделать эту кнопку видимой. Сейчас, после выполнения оператора Button1.Parent := Panel1 эта кнопка становится невидимой, т.к. Panel1 ее перекрывает. Каким способом кнопку в этом случае сделать видимой? smile 

Автор: Frees 13.9.2010, 12:31
Цитата(Aleks26 @  13.9.2010,  15:26 Найти цитируемый пост)
Button1.Parent := Panel1 эта кнопка становится невидимой, т.к. Panel1 ее перекрывает

не верю
Button1 в любом случае будет поверх Panel1, (а точнее она будет на ней)

Добавлено через 1 минуту и 12 секунд
а лучше расскажи чего хочешь сделать... 

Автор: aleksh 13.9.2010, 12:54
может
Код

button1.visible := true;

Автор: pseud 13.9.2010, 13:30
или:
Код

Button1.Parent := Panel1;
Button1.Top := 0;
Button1.Left := 0;

Автор: Aleks26 13.9.2010, 14:01
Это чисто пример из одного учебника где рассматривается создание некоего компонента во время выполнения программы:
Код

unit unCreateComp1;

interface

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

type
  TForm1 = class(TForm)
    pnlMain1: TPanel;
    btnCreate1: TButton;
    btnMove1: TButton;
    btnFreePanel1: TButton;
    btnMoveButtons1: TButton;
    procedure btnCreate1Click(Sender: TObject);
    procedure btnMove1Click(Sender: TObject);
    procedure btnFreePanel1Click(Sender: TObject);
    procedure btnMoveButtons1Click(Sender: TObject);
  private
    { Private declarations }
    edtNewEdit1: TEdit;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnCreate1Click(Sender: TObject);
begin
 edtNewEdit1 := Tedit.Create(pnlMain1);
// edtNewEdit1.Left := 50;
 edtNewEdit1.Top := 10;
 edtNewEdit1.Width := pnlMain1.ClientWidth - 61;
 edtNewEdit1.Height := pnlMain1.ClientHeight - 10;
 edtNewEdit1.Left := Trunc((pnlMain1.Width - edtNewEdit1.Width)/2);
 edtNewEdit1.Parent := pnlMain1;
 //
end;

procedure TForm1.btnMove1Click(Sender: TObject);
begin
 edtNewEdit1.Parent := Self;
end;

procedure TForm1.btnFreePanel1Click(Sender: TObject);
begin
 pnlMain1.Free;
end;

procedure TForm1.btnMoveButtons1Click(Sender: TObject);
begin
 btnCreate1.Parent := pnlMain1;
 btnMove1.Parent := pnlMain1;
 btnFreePanel1.Parent := pnlMain1;
 btnMoveButtons1.Parent := pnlMain1;
 btnFreepanel1.Visible := True;
 pnlMain1.SendToBack;

end;

end.


Просто в качестве эксперимента я здесь пробую кнопкой btnMoveButtons1 поменять для этих кнопок "родителя", но при нажатии этой кнопки видна остается только панель pnlMain1, а кнопок я не вижу. Я пробую и сделать для одной из кнопок Visible := True и пытался применить к панели метод SendToBack, но этих кнопок все равно не видать.

Автор: Frees 13.9.2010, 14:10
Цитата(Aleks26 @  13.9.2010,  17:01 Найти цитируемый пост)
 пытался применить к панели метод SendToBack

и задвинул ее назад вместе с кнопками

испытай BrignToFront

Добавлено через 3 минуты и 27 секунд
либо старые координаты кнопок за пределами размеров панели

Автор: pseud 13.9.2010, 14:22
Цитата(Aleks26 @  13.9.2010,  14:01 Найти цитируемый пост)
но этих кнопок все равно не видать. 

спорим мой код поможет? проверь его, настоятельно рекомендую (выше).

Добавлено через 1 минуту и 44 секунды
Цитата

 edtNewEdit1.Width := pnlMain1.ClientWidth - 61;
 edtNewEdit1.Height := pnlMain1.ClientHeight - 10;

ахренть
тебе не кажется что твой едит все портит, накрывая почти всю панел?

Добавлено через 4 минуты и 50 секунд
но это пофик. высота едита все равно будет ~21.

Автор: Aleks26 13.9.2010, 16:23
Цитата

либо старые координаты кнопок за пределами размеров панели 


Да. Так и есть. Спасибо. Там просто не хватало размера панели. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)