![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Real Time Панель
Steep © (2007-04-03 14:38:00)Все-таки думаю решить проблему с панелью иным методом
т.е. будет форма на ней должны автоматом создаватся клавиши
(например при выборе в меню добавить)
Не подскажете как кинуть на панель кнопку, в заданное месторасположение + натянуть на нее иконку (битмап)?
..
var Button1:TButton;
begin
Button1:=TButton.crete(Form1{сдесь наверно можно просто указать панель?});
With Button do
begin
width:=10; // длина
height:=10; //высота
top:=0; //если это координата сверху - то где же снизу?
end;
end;
//не совсем понял где, же координаты...
А потом еще и как-то кинуть на нее событие... (а ведь ее еще надо найти...)
ЗЫ Заранее списибо!
{RASkov} (2007-04-03 15:02:00) [21]> но кнопка не создается...
Кнопка-то создается, только места своего не знает.
SergGG (2007-04-03 15:02:00) [22]См. [9]
Ega23 (2007-04-03 15:01:00) [23]Вот тебе готовый код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
procedure MyButtonClick(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
With TSpeedButton.Create(Self) do
begin
Parent := Panel1;
SetBounds(10, 10, 100, 25);
Caption := 'Кнопка';
OnClick :=MyButtonClick;
Glyph.LoadFromFile('E:\NEW.BMP');
end;
end;
procedure TForm1.MyButtonClick(Sender: TObject);
begin
ShowMessage('Клик');
end;
end.
{RASkov} (2007-04-03 15:00:00) [24]> но кнопка не создается...
[7], [9], [10] - это так просто было? Со стенкой....
Steep (2007-04-03 14:55:00) [25]короче пока написал так:
procedure TForm1.Button1Click(Sender: TObject);
var Button2: TButton;
begin
Button2 := TButton.create(Form1);
With Button2 do
begin
width := 10; // длина
height := 10; //высота
left := 50;
top := 50;
end;
end;
но кнопка не создается...
{RASkov} (2007-04-03 14:55:00) [26]> [6] Sonia © (03.04.07 14:50)
Увы... это чуть-чуть не то.
> [8] Sonia © (03.04.07 14:53)
А это вобще не то.
Ega23 (2007-04-03 14:54:00) [27]
typeну и теперь на какой-нибудь FormCreate или что там у тебя
TForm1 = class(TForm)
.......
private
procedure MyButtonClick(Sender : TObject); // обработчик клика на кнопке
end;
procedure TForm1.MyButtonClick(Sender : TObject)
begin
ShowMessage('Клик');
end;
with TSpeedButton.Create(Form1) do // Form1 тут нужен для автоудаления.
// т.е. когда будет "убита" Form1, вместе с ней удалиться и кнопка
begin
Parent := Panel1; // тот контрол, на котором будет лежать кнопка
SetBounds(Top, Left, Width, Height); // TLWH - тут всё то, что относится к кнопке
Glyph.LoadFromFile(FileName); // или LoadFromStream, это от тебя зависит
OnClick := MyButtonClick;
end;
SergGG (2007-04-03 14:53:00) [28]Button.Parent:=Panel1
Sonia (2007-04-03 14:53:00) [29]
> Procedure TForm1.OnClickButton( Sender : TObject );
Надо я думаю так:
Procedure TForm1.Button1Click( Sender : TObject );
{RASkov} (2007-04-03 14:51:00) [30]> Не знаю правиль ли я думаю, но может быть так?
> TButton(Button1).OnClick:=OnClickButton;
Просто
...
OnClick:=OnClickButton;
...
> Но если это все правильно помогите с тем чтобы запихнуть в панельку...
Парента ей(кнопке) дай
Parent:=
Sonia (2007-04-03 14:50:00) [31]
> Но если это все правильно помогите с тем чтобы запихнуть
> в панельку...
> Button1:=TButton.crete(Form1{сдесь наверно можно просто
> указать панель?});
А ты кажется сам ответил на свой вопрос..
Steep (2007-04-03 14:50:00) [32]
> Sonia ©
Пасип!
Sonia (2007-04-03 14:49:00) [33]Если надо еще иконку, то используй BitBtn
BitBtn1.Glyph:='полный путь к файлу иконки';
Steep (2007-04-03 14:49:00) [34]
> Я думаю, что координата снизу вычисляется, зная длину и
> высоту
ты нужна координата слева! без хз куда делфи кноку кинет...
Вотя подумал и тупо дописал... вроде так можно...
>Ну ты же знаешь как она будет называться, тогда что стоит вызвать на нее событие?
Да фиг его знает в Real Time еще не мудил - все через интерфейс..
Sonia (2007-04-03 14:47:00) [35]
> top:=0; //если это координата сверху - то где же снизу?
Я думаю, что координата снизу вычисляется, зная длину и высоту
> А потом еще и как-то кинуть на нее событие... (а ведь ее
> еще надо найти...)
Ну ты же знаешь как она будет называться, тогда что стоит вызвать на нее событие?
Steep (2007-04-03 14:47:00) [36]Все таки наверно если дописать Button.left := 0; - то получим вторую координату ;)
А событие кинуть как...
Не знаю правиль ли я думаю, но может быть так?
TButton(Button1).OnClick:=OnClickButton;
А потом описать само событие как:
Procedure TForm1.OnClickButton( Sender : TObject );
Begin
ShowMessage('Нажали на кнопку');
End;
... ща поробую может заработает...
Но если это все правильно помогите с тем чтобы запихнуть в панельку...