Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2011, 20:04   #1
Рик
Пользователь
 
Регистрация: 07.02.2011
Сообщений: 29
По умолчанию Упорядоченное расположение компонентов на форме

Здрасвуйте. При запуске приложения на форме программно создается массив кнопок. Как их разместить матрицой 4 Х 6? Подобный вопрос я уже когда-то задавал, но вариант сделать как мне ответили не удовлетворил.
Рик вне форума Ответить с цитированием
Старый 03.03.2011, 20:53   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Массив кнопок такой?
Код:
...:array[1..24] of TButton;
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  bWidth, bHeight, w, h: integer;
  x, y, c: integer;
begin
  bWidth := 75; // Width кнопки
  bHeight := 25; // Height кнопки
  w := 10; // Отступ между столбцами
  h := 5; // Отступ между строками

  c := 1; // Счетчик кнопок

  for x := 1 to 6 do
    for y := 1 to 4 do
    begin
      Button[c].Left := (x * bWidth) + (x * w) - bWidth;
      Button[c].Top := (y * bHeight) + (y * h) - bHeight;
      Inc(c);
    end;
end;
kangreon вне форума Ответить с цитированием
Старый 03.03.2011, 22:37   #3
xexxex
Пользователь
 
Регистрация: 31.07.2010
Сообщений: 52
По умолчанию

Еще вариант
Код:
var L, T, J, P: Integer;
begin
  L := 10;
  T := 10;
  for J := 1 to 4 do
    for P := 1 to 6 do
      with TButton.Create(Self) do begin
        Parent := Self;
        Left := L;
        Top := T;
        Inc(T, Height);
        if P = 6 then begin
          Inc(L, Width);
          T := 10;
        end;
      end;
xexxex вне форума Ответить с цитированием
Старый 04.03.2011, 19:45   #4
Рик
Пользователь
 
Регистрация: 07.02.2011
Сообщений: 29
По умолчанию

Спасибо за помощь! К сожалению, первый вариант не проканал(, а со вторым все ОК. А как теперь написать процедуру обработки событий этих кнопок? Заранее спасибо.
Рик вне форума Ответить с цитированием
Старый 05.03.2011, 00:56   #5
xexxex
Пользователь
 
Регистрация: 31.07.2010
Сообщений: 52
По умолчанию

Код:
var L, T, J, P, aTag: Integer;
begin
  L := 10;
  T := 10;
  aTab := 0;
  for J := 1 to 4 do
    for P := 1 to 6 do
      with TButton.Create(Self) do begin
        Parent := Self;
        Left := L;
        Top := T;
        Inc(T, Height);
        Tag := aTag; // используем у кнопок свойство Tag
        Inc(aTag);
        Caption := IntToStr(Tag);
        OnClick := Self.ButtonClick; 
        if P = 6 then begin
          Inc(L, Width);
          T := 10;
        end;
      end;
/////////////////////////////////////////
type
  TForm1 = class(TForm)
  ....
  ....
  private
    procedure ButtonClick(Sender: TObject);
  end;
  
procedure Form1.ButtonClick(Sender: TObject);
begin
    // для ориентации, таги у кнопок идут сверху-вниз\ справа-налево
  with TButton(Sender) do
  case Tag of
    0: ShowMessage(Caption);
    1:;
      ...
  end;
end;

Последний раз редактировалось xexxex; 05.03.2011 в 00:59.
xexxex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смещение компонентов на форме ProgDel Общие вопросы Delphi 3 24.10.2010 16:51
Расположение showmessage на форме Ckomoroh Общие вопросы Delphi 1 18.11.2009 21:20
Поиск компонентов на форме Des Общие вопросы Delphi 10 29.04.2009 11:17
Выбор компонентов на форме HPS Общие вопросы Delphi 6 28.01.2009 14:34
Использование компонентов в другой форме White БД в Delphi 3 27.08.2008 13:32