Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизReal Time Панель Найти похожие ветки
← →
Steep © (2007-04-03 14:38) [0]Все-таки думаю решить проблему с панелью иным методом
т.е. будет форма на ней должны автоматом создаватся клавиши
(например при выборе в меню добавить)
Не подскажете как кинуть на панель кнопку, в заданное месторасположение + натянуть на нее иконку (битмап)?
..
var Button1:TButton;
begin
Button1:=TButton.crete(Form1{сдесь наверно можно просто указать панель?});
With Button do
begin
width:=10; // длина
height:=10; //высота
top:=0; //если это координата сверху - то где же снизу?
end;
end;
//не совсем понял где, же координаты...
А потом еще и как-то кинуть на нее событие... (а ведь ее еще надо найти...)
ЗЫ Заранее списибо!
← →
Sonia © (2007-04-03 14:47) [1]
> top:=0; //если это координата сверху - то где же снизу?
Я думаю, что координата снизу вычисляется, зная длину и высоту
> А потом еще и как-то кинуть на нее событие... (а ведь ее
> еще надо найти...)
Ну ты же знаешь как она будет называться, тогда что стоит вызвать на нее событие?
← →
Steep © (2007-04-03 14:47) [2]Все таки наверно если дописать Button.left := 0; - то получим вторую координату ;)
А событие кинуть как...
Не знаю правиль ли я думаю, но может быть так?
TButton(Button1).OnClick:=OnClickButton;
А потом описать само событие как:Procedure TForm1.OnClickButton( Sender : TObject );
Begin
ShowMessage("Нажали на кнопку");
End;
... ща поробую может заработает...
Но если это все правильно помогите с тем чтобы запихнуть в панельку...
← →
Steep © (2007-04-03 14:49) [3]
> Я думаю, что координата снизу вычисляется, зная длину и
> высоту
ты нужна координата слева! без хз куда делфи кноку кинет...
Вотя подумал и тупо дописал... вроде так можно...
>Ну ты же знаешь как она будет называться, тогда что стоит вызвать на нее событие?
Да фиг его знает в Real Time еще не мудил - все через интерфейс..
← →
Sonia © (2007-04-03 14:49) [4]Если надо еще иконку, то используй BitBtn
BitBtn1.Glyph:="полный путь к файлу иконки";
← →
Steep © (2007-04-03 14:50) [5]
> Sonia ©
Пасип!
← →
Sonia © (2007-04-03 14:50) [6]
> Но если это все правильно помогите с тем чтобы запихнуть
> в панельку...
> Button1:=TButton.crete(Form1{сдесь наверно можно просто
> указать панель?});
А ты кажется сам ответил на свой вопрос..
← →
{RASkov} (2007-04-03 14:51) [7]> Не знаю правиль ли я думаю, но может быть так?
> TButton(Button1).OnClick:=OnClickButton;
Просто
...OnClick:=OnClickButton;
...
> Но если это все правильно помогите с тем чтобы запихнуть в панельку...
Парента ей(кнопке) дайParent:=
← →
Sonia © (2007-04-03 14:53) [8]
> Procedure TForm1.OnClickButton( Sender : TObject );
Надо я думаю так:
Procedure TForm1.Button1Click( Sender : TObject );
← →
SergGG © (2007-04-03 14:53) [9]Button.Parent:=Panel1
← →
Ega23 © (2007-04-03 14:54) [10]
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;
← →
{RASkov} (2007-04-03 14:55) [11]> [6] Sonia © (03.04.07 14:50)
Увы... это чуть-чуть не то.
> [8] Sonia © (03.04.07 14:53)
А это вобще не то.
← →
Steep © (2007-04-03 14:55) [12]короче пока написал так:
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 15:00) [13]> но кнопка не создается...
[7], [9], [10] - это так просто было? Со стенкой....
← →
Ega23 © (2007-04-03 15:01) [14]Вот тебе готовый код:
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.
← →
SergGG © (2007-04-03 15:02) [15]См. [9]
← →
{RASkov} (2007-04-03 15:02) [16]> но кнопка не создается...
Кнопка-то создается, только места своего не знает.
← →
Steep © (2007-04-03 15:03) [17]>[7], [9], [10] - это так просто было? Со стенкой....
Про парент я понял, еще просто сделать не успел ;)
Щас вот попытался сделать что Ega23 © написал, но делфяк ругается на TSpeedButton
← →
Ega23 © (2007-04-03 15:04) [18]
> Щас вот попытался сделать что Ega23 © написал, но делфяк
> ругается на TSpeedButton
uses Buttons (для Delphi7)
← →
Sonia © (2007-04-03 15:09) [19]
> Procedure TForm1.Button1Click( Sender : TObject );
> [8] Sonia © (03.04.07 14:53)
>
> А это вобще не то.
Ну так сам Delphi пишет (в плане синтаксиса)
← →
{RASkov} (2007-04-03 15:09) [20]> но делфяк ругается на TSpeedButton
Это она на тебя ругается, а не на TSpeedButton :)
← →
Steep © (2007-04-03 15:10) [21]
> uses Buttons (для Delphi7)
ну и делфи 2006 тоже ;) Пасип..
Вобщем код теперь следующий:
procedure TForm1.MyButtonClick(Sender : TObject);
begin
ShowMessage("Клик");
end;
procedure TForm1.Button1Click(Sender: TObject);
var
TButton: TSpeedButton;
FileName: String;
begin
with TButton.Create(Form1) do
begin
Parent := Panel1;
SetBounds(10, 10, 50, 50);
//Caption := "";
Glyph.LoadFromFile(FileName);
OnClick := MyButtonClick;
end;
end;
При нажатии на клавишу пишет Stack OverFlow.. даже если Glyph. закометить...
← →
Steep © (2007-04-03 15:13) [22]А понял:
begin
With TSpeedButton.Create(Self) do
токо теперь вопрос а какое имя у этой кнопки?
И как ее закилить?
← →
{RASkov} (2007-04-03 15:14) [23]> Ну так сам Delphi пишет (в плане синтаксиса)
При чем здесь это? Для каждой, вновь созданной в рантайм кнопки, свой обработчик по "правилам" делфи делать?
> [21] Steep © (03.04.07 15:10)
> var
> TButton: TSpeedButton;
Ты сам понял, что написал?
← →
{RASkov} (2007-04-03 15:16) [24]> > var
> > TButton: TSpeedButton;
>
> Ты сам понял, что написал?
Т.е. я имел ввиду связку:
> var
> TButton: TSpeedButton;
> FileName: String;
> begin
> with TButton.Create(Form1) do
> begin
← →
Steep © (2007-04-03 15:19) [25]
> > var
>> TButton: TSpeedButton;
>
> Ты сам понял, что написал?
Самому смешно стало :)
← →
SergGG © (2007-04-03 15:20) [26]procedure TForm1.BitBtn1Click(Sender: TObject);
var
Button: TSpeedButton;
FileName: String;
begin
Button:=TButton.Create(nil);
with Button do
begin
Parent := Panel1;
SetBounds(10, 10, 50, 50);
//Caption := "";
Glyph.LoadFromFile(FileName);
OnClick := MyButtonClick;
end;
end;
← →
Sonia © (2007-04-03 15:20) [27]
> {RASkov} (03.04.07 15:14) [23]
> > Ну так сам Delphi пишет (в плане синтаксиса)
>
> При чем здесь это? Для каждой, вновь созданной в рантайм
> кнопки, свой обработчик по "правилам" делфи делать?
Ты меня вообще не понял :) Я поправила тока синтаксис
← →
{RASkov} (2007-04-03 15:22) [28]Вообще при таком подходе
> With TSpeedButton.Create(Self) do
переменную типа TSpeedButton описывать не надо, о чем тебя предупредит среда.
← →
{RASkov} (2007-04-03 15:24) [29]> [27] Sonia © (03.04.07 15:20)
А чем этот "синтаксис":
> Procedure TForm1.OnClickButton( Sender : TObject );
отличается от этого
> Procedure TForm1.Button1Click( Sender : TObject );
???? :)
← →
Steep © (2007-04-03 15:24) [30]Спасибо всем! за помощь!
Ответь плиз если не влом
> токо теперь вопрос а какое имя у этой кнопки?И как ее закилить?
← →
{RASkov} (2007-04-03 15:27) [31]> [30] Steep © (03.04.07 15:24)
при твоем подходе ее закилит форма или кто там при create был...
← →
SergGG © (2007-04-03 15:28) [32]См. [26]- РАБОТАЕТ
← →
Ega23 © (2007-04-03 15:30) [33]
> токо теперь вопрос а какое имя у этой кнопки?И как ее закилить?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");
Name := "MySuperButtonName";
Anchors := [akTop, akLeft];
end;
end;
← →
{RASkov} (2007-04-03 15:32) [34]> [32] SergGG © (03.04.07 15:28)
> См. [26]- РАБОТАЕТ
Ссылка
> Button: TSpeedButton;
будет утерена поэтому в ней нет необходимости...
← →
Steep © (2007-04-03 15:47) [35]Большое спасибо всем!!!!!
Кланююся!!
← →
{RASkov} (2007-04-03 15:50) [36]> Кланююся!!
Лоб не расшиби :) А то потом опять этот-же вопрос будет :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.042 c