Текущий архив: 2003.01.16;
Скачать: CL | DM;
ВнизПомогите с RunTime!!!!! Найти похожие ветки
← →
Fider (2003-01-05 08:36) [0]Приветик всем!!! Дела, короче, обстоят так: я создаю массив кнопок в RunTime примерно так:
procedure ShowButtons ;
var a: integer;
begin
ww := Form1.Image1.Width div 30;
hh := Form1.Image1.Height div 30;
for a:= 1 to ww*hh do
begin
if w < ww then
begin
buts[a]:=TBitBtn.Create(Form1);
buts[a].parent:=form1;
buts[a].Width:=30;
buts[a].Height:=30;
buts[a].Top:=30*h;
buts[a].Left:=30*w;
buts[a].Caption:=inttostr(Random(4) + 1);
w:= w + 1;
end;
if w = ww then
begin
buts[a]:=TBitBtn.Create(Form1);
buts[a].parent:=form1;
buts[a].Width:=30;
buts[a].Height:=30;
buts[a].Top:=30*h;
buts[a].Left:=30*w;
buts[a].Caption:=inttostr(Random(4) + 1);
w := 0;
h := h + 1;
end;
end;
end;
и понимаю, что толку-то от этих кнопок!!!Как на каждую из них добавить по продуре? Помогите, plzzz!!!
← →
Song (2003-01-05 08:43) [1]А зачем процедуру на каждую? Добавляю всегда одну и ту же Buts[a].onClick:=MyClickProc;
А в процедуре MyClickProc вычисляйте какая именно кнопка была нажата по Sender"у.
← →
Fider (2003-01-05 08:50) [2]Неужели кто-то так быстро ответил!!!.... Спасибо, конечно, но вот, что вылазит при запуске:
[Error] Unit1.pas(74): Incompatible types: "method pointer and regular procedure"
← →
Song (2003-01-05 08:59) [3]Надо чтобы процедура MyClickProc была методом класса т.е. вы должны описать в классе и кроме того тип её должен быть TNotifyEvent (нажмите двойной клик на событии в ИО чтобы посмотреть в какой форме должны быть параметры у этой процедуры).
← →
Viktor Kushnir (2003-01-05 09:01) [4]А ну наверное так:
...
Procedure Btnc(Sender :TObject); //метод должен принадлежать классу!
...
Procedure TMainForm.Btnc(Sender :TObjcet);
Begin
BEEP;
End;
...
//И где-то в твоей процедуре...
buts[a].onclick := Btnc;
...
← →
VAleksey (2003-01-05 09:02) [5]
> нажмите двойной клик на событии в ИО чтобы посмотреть в
> какой форме должны быть параметры у этой процедуры
и переделай ее под нужную тебе
← →
Fider (2003-01-05 10:33) [6]Можете называть меня ламером, но у меня не выходит. Че куда ни напиши, все время какие- нибудь ошибки, может есть у кого готовый пример, так поделитесь, можно мылом, тогда может и дойдет, наконец... Спасибо тем кто уже ответил, и пжалста тем, кто собирается!!!
← →
REA (2003-01-05 11:01) [7]Удалено модератором
Примечание: OffTopic
← →
Наталия (2003-01-05 11:06) [8]на delphi.vitpc.com есть статья в разделе "Hellow,world" - "Жизнь и смерть в режиме runtime" - вроде бы. Почитай, многие вопросы отпадут.
← →
DJ_Sedoy (2003-01-05 11:30) [9]Еще раз: это должен быть медот класса!
Аналогичный мой вопрос тут был дней 5 назад. Итак (Как самый простой пример):
TForm1 = class (Tobject)
.............
MyProc(Sender: TObject);
.............
end;
...............
В самой процедуре:
buts[a].onClick:=MyProc;
И далее в программе:
procedure TForm1.MyProc(Sender: TObject);
Begin
САМА ПРОЦЕДУРА, ПРИ ТОМ МОЖНО УЧЕСТЬ, ЧТО
if Sender = buts[1] then ShowMessage("Button 1 pressed");
И ТАК ДАЛЕЕ
end;
Именно в таком случае мы сделали эту процедуру методом класса.
← →
NikolaB (2003-01-05 12:54) [10]> if Sender = buts[1] then ShowMessage("Button 1 pressed");
Mojno sdelat luchse:
In Create:
buts[a].Tag:=a;
In Procedure:
Case tButton(Sender).Tag of
...
← →
Tano (2003-01-05 21:26) [11]Мой дежурный шаблон создания кнопки в RT с реакцией на вход/выход мыши. Тут полностью описано как привязать OnClick (или любой другой). Одна или несколько кнопок - неважно.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
//ПИШЕМ ПОТОМОК TButton (или чего там еще надо)...
TNewButton = class(TButton)
procedure BMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure BMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
end;
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure New_FlashButtonClick(Sender: TObject); //сами пишем это
private
{ Private declarations }
public
FlashButton :TNewButton; //кнопка - просто переменная
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TNewButton.BMouseEnter(var Message: TMessage);
begin
//мыша заехала - меняем свойства кнопки
//Font.Color:=clLime; - ЦВЕТ У TButton НЕ МЕНЯЕТСЯ (странно, но только сейчас заметил :-(
Font.Style:=[fsBold, fsUnderline];
SetFocus; //- ставим фокус на кнопку - необязательно
end;
procedure TNewButton.BMouseLeave(var Message: TMessage);
begin
//мыша убежала - меняем свойства кнопки
//Font.Color:=clBlack;
Font.Style:=[];
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
//создание кнопки на форме в Run-Time
FlashButton:=TNewButton.Create(self); //создать
FlashButton.Parent:=self; //указать родителем ЭТУ форму
with FlashButton do
begin
Name:="FlashButton"; //!!! = названию переменной !!!
//инициализация полей - "соль по вкусу"
Caption:="Моргушка";
Left:=10;
Top:=10;
Width:=75;
Height:=25;
Cursor:=crHandPoint;
OnClick:=New_FlashButtonClick;
//Подсказка: я кладу предок элемента (TButton) на
//форму, выравниваю, подписываю, и т.д. и т.п.,
//затем открываю форму как текст, нахожу блок свойств, у нас - строки:
//
//object Button1: TButton
// Left = 32
// Top = 20
// Width = 75
// Height = 25
// Caption = "Button1"
// TabOrder = 0
//end
//
//всё это копирую в "соль по вкусу" и дописываю ":=" и ";"
// -> получаю гарантированное создание в Run-Time того, что видел
//на форме при дизайне.
end;
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
//сам породил - сам и убивай!
FlashButton.Free;
end;
procedure TForm2.New_FlashButtonClick(Sender: TObject);
begin
Caption:=DateTimeToStr(Now); //демонстрация
end;
end.
Рекомендую (раз уж самому приходиться конструировать) работай с TPanel,
у нее возможностей по оформлению больше, а работать как кнопка она вполне способна
Удачи!
← →
Tano (2003-01-05 21:28) [12]Чуток избыточно, но вырезать лишнее проще ;-)
← →
Fider (2003-01-06 10:36) [13]УРА!!!!!! Люди, всем спасибо, с Рождеством, с Новым годом вас всех!!!!!!!
Страницы: 1 вся ветка
Текущий архив: 2003.01.16;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.008 c