Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.03.2014, 01:19
BATMAN92 BATMAN92 вне форума
Прохожий
 
Регистрация: 06.03.2014
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
Сообщение Как вписать код в динамические кнопки?

Задача сгенерировать через Edit n-компонентов Button и Shape, потом при нажатий на button1 один из компонентов Shape меняет позицию на 100 в низ к примеру, также с button2, сгенерировать все это получилось, но как теперь зделать чтоб Shape менял позицию?

Код:
var       s1:array[1..10] of tshape;  d,a:integer;  n,i:integer;     t1,t2,t3:string;
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var d:integer;   B: TButton;


begin
  for i := 1 to strtoint(edit1.Text) do
  begin
    B := TButton.Create(Self);
    B.Caption := Format('extragerea'+inttostr(i),[i]);
    B.Parent := Self;
    B.Height := 23;
    B.Width := 100;
    B.Left := 10;
    B.Top := 10 + i * 25;
  end;


for i:= 1 to strtoint(edit1.text) do  begin

   s1[i]:=tshape.Create(self);
   s1[i].Parent:=self;
   s1[i].Shape:=stcircle;
   s1[i].Width:=30;
   s1[i].height:=30;
   s1[i].Top:=30;
   s1[i].Left:=130+i*30;
 randomize;
a:=random(strtoint(edit1.text));
      if a=0 then  s1[i].Brush.Color:=clred; s1[i].Pen.Color:=clblack;
      if a=1 then s1[i].Brush.Color:=clblue; s1[i].Pen.Color:=clgreen;
      if a=2 then s1[i].Brush.Color:=clblack; s1[i].Pen.Color:=clred;

end;
 end;


end.
Ответить с цитированием
  #2  
Старый 06.03.2014, 02:17
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Задайте при создании шейпы свойство таг равный переменной i, а у кнопки подключите обработчик жима по ней, и в нём по тагу можно отловить кружочек который нужно передвинуть. Вот подобное по теме

З.Ы. Немного код не рабочий должен быть - здесь
Код:
...
      if a=0 then  s1[i].Brush.Color:=clred; s1[i].Pen.Color:=clblack;
      if a=1 then s1[i].Brush.Color:=clblue; s1[i].Pen.Color:=clgreen;
      if a=2 then s1[i].Brush.Color:=clblack; s1[i].Pen.Color:=clred;
...
блоков бегиненд не хватает после then, иначе цвет карандашика у шейпы будет всегда clRed, да и наверное лучше это кейсом делать
Код:
...
with s1[i] do
case Random(StrToInt(Edit1.Text)) of
 1: begin Brush.Color:= clBlue; Pen.Color:= clGreen; end;
 2: begin Brush.Color:= clBlack; Pen.Color:= clRed; end;
else 
    begin Brush.Color:= clRed; Pen.Color:= clBlack; end;
end;{case}
...

З.Ы.З.Ы. Только сейчас заметил - капшн на кнопках это конечно хорошо, но имя им вменяемое присвоить, да ещё и с приплюснутым счётчиком ещё лучше бы, намного легче потом их искать будет в рантайме и веселей

Последний раз редактировалось Alegun, 06.03.2014 в 10:30.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter