Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

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
 TForm1 = class(TForm)
   .......
  private
   procedure MyButtonClick(Sender : TObject); // обработчик клика на кнопке
 end;

procedure TForm1.MyButtonClick(Sender : TObject)
begin
 ShowMessage("Клик");
end;

ну и теперь на какой-нибудь FormCreate или что там у тебя

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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.046 c
4-1164645406
Альберт
2006-11-27 19:36
2007.04.22
распаковка zip встроенными возможностями


2-1175614931
Kostafey
2007-04-03 19:42
2007.04.22
В продолжении конкурса на самый тупой вопрос


15-1175261982
Andre_s
2007-03-30 17:39
2007.04.22
ЖК мониторы


3-1170747668
RomanH
2007-02-06 10:41
2007.04.22
SQL-запрос


9-1148506360
lstalkerl
2006-05-25 01:32
2007.04.22
Нужна помощь по формам