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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 16:39   #1
Snake_ua
Пользователь
 
Регистрация: 25.09.2007
Сообщений: 66
По умолчанию Скругление программно созданных объектов

Доброго времени суток.
Подскажите, как решить следующую задачу
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, j : integer;
begin
  for i := 1 to 3 do
    for j := 1 to 11 do
      with TPanel.Create(Self) do
      begin
        Caption := Format ('%d %d', [i, j]);
        ParentBackground:=False;
        Top     := 50 + 73 * i;
        Left    := 50 + 73 * j;
        Width   := 70;
        Height  := 70;
        OnClick := PanelClick;
        Parent  := Self;
      end;
end;

procedure TForm1.PanelClick (Sender : TObject);
begin
  ShowMessageFmt ('Нажата кнопка %s', [TPanel(Sender).Caption]);
end;
Задача проста. Делаю клавиатуру, с панелек, но каждой кнопки-панельки углы должны быть скруглены. Есть процедура MyRound. Но как мне использовать эту процедуру? Конечно можно набросать на форму 33 панельки, с каждой мучиться, и писать код для скругления каждой и позицией каждой, но хочется красивее и проще.

И еще вопрос. Когда я переношу код
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, j : integer;
begin
  for i := 1 to 3 do
    for j := 1 to 11 do
      with TPanel.Create(Self) do
      begin
        Caption := Format ('%d %d', [i, j]);
        ParentBackground:=False;
        Top     := 50 + 73 * i;
        Left    := 50 + 73 * j;
        Width   := 70;
        Height  := 70;
        OnClick := OwnButtonClick;
        Parent  := Self;
      end;
end;
в другой модуль, то ругается на
Код:
with TPanel.Create(Self) do
Как мне в другом модуле обьявить переменную Self?

Последний раз редактировалось Snake_ua; 08.05.2011 в 17:50.
Snake_ua вне форума Ответить с цитированием
Старый 09.05.2011, 04:29   #2
Snake_ua
Пользователь
 
Регистрация: 25.09.2007
Сообщений: 66
По умолчанию

Первая часть задачи решена.
Сделал следующее:
Добавил переменную NewPanel
Код:
...
var NewPanel: TPanel;
...
После, вместо
Код:
with TPanel.Create(Self) do
сделал
Код:
NewPanel:=TPanel.Create(PanelPrt);
      with NewPanel do
Оказалось предельно просто.
Код:
MyRound(NewPanel);
все панельки как на подбор.
Но вот все таки хочу эту процедуру загнать в отдельный модуль и
Код:
  for i := 0 to 2 do
    for j := 0 to 10 do
    begin
     NewPanel:=TPanel.Create(Form1.PanelPrt);
      with NewPanel do
      begin
      Inc(n);
        Caption := Format ('%d %d', [i, j]);
        ParentBackground:=False;
        Top     := 50 + 73 * i;
        Left    := 50 + 73 * j;
        Width   := 70;
        Height  := 70;
        OnClick := Form1.OwnButtonClick;
        Parent  := Self;
        MyRound(NewPanel);    
      end;
    end;
Код:
Parent  := Self;
Цитата:
Undeclared indentifier: 'Self'
и не могу понять что делать.
Snake_ua вне форума Ответить с цитированием
Старый 09.05.2011, 04:53   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Какая необходимость так привязываться к Self? Это просто указатель на "на саму себя", который можно заменить на переменную, также указывающую на форму:
Код:
Parent := Form1;
и все.
Прик вне форума Ответить с цитированием
Старый 09.05.2011, 17:09   #4
Snake_ua
Пользователь
 
Регистрация: 25.09.2007
Сообщений: 66
По умолчанию

Оу, спасибо
Snake_ua вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скругление углов таблицы dream1k HTML и CSS 1 09.04.2011 08:35
Сохранение динамически созданных объектов Marsel737 Общие вопросы Delphi 25 15.12.2009 14:24
Свойства динамически созданных объектов. Dorithur Общие вопросы Delphi 4 12.12.2009 15:35
Обработка событий динамически созданных объектов в С++ Builder Shafty Помощь студентам 1 26.02.2009 16:11