Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Вниз

Помогите с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
3-48954
eLVik
2002-12-21 21:44
2003.01.16
Где можно скачать БД для паспортного стола


14-49295
TTCustomDelphiMaster
2002-12-27 17:25
2003.01.16
Париж де нотердам


14-49218
Юров Владимир
2002-12-27 11:24
2003.01.16
MS SQL Server и конечный пользователь


4-49341
Ardor
2002-11-28 17:42
2003.01.16
Net Send


14-49316
WinNuker
2002-12-28 12:29
2003.01.16
Delphi 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский