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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2008, 13:22   #1
Sveta22
 
Регистрация: 14.11.2008
Сообщений: 8
По умолчанию Работа с динамичексим компонентом

Добрый день.
Создаю динамически кнопки
Код:
procedure TForm1.FormCreate(Sender: TObject);
  var
  i: integer;
  c: integer;
begin
   c := Form1.ClientWidth div 52;
  for i := low(b) to high(b) do begin
    b[0] := TButton.Create(nil);
    b[0].Caption := IntToStr(i + 1);
    b[0].Width := 50;
    b[0].Height := 20;
    b[0].Left := 152 * (i mod c);
    b[0].Top := 22 * (i div c);
    b[0].OnClick := Button1Click;
    b[0].Parent := Form1;
    b[1] := TButton.Create(nil);
    b[1].Caption := IntToStr(i + 1);
    b[1].Width := 50;
    b[1].Height := 20;
    b[1].Left := 152 * (i mod c);
    b[1].Top := 42* (i div c);
    b[1].Parent := Form1;
Проверяю на то будет ли кнопка отображатся или нет
Код:
b[0].Visible :=FileExists('C:\1.exe');
Проблема в том что мне надо допустим если не будет отоброжатся первая кнопка то вторая поднялась на ее место и т.д. Подскажите плизз как это сделать
Sveta22 вне форума Ответить с цитированием
Старый 14.11.2008, 13:47   #2
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    B: array [1..10] of TButton;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
const
  Step = 40;
var
  I, P: integer;
begin
  P := 0;
  for I := 1 to High(B) do
  begin
    B[i] := TButton.Create(Form1);
    B[i].Parent := Form1;
    B[i].Name := 'B' + IntToStr(I);
// ...
    B[i].Top := P;
    Randomize;     // эмуляция видимости в вашем коде
    if Random(2) = 0 then   //типа файл существует
    begin
      B[i].Visible := true;
      P := P + Step;
    end;
  end;
end;

end.
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 14.11.2008, 13:54   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Sveta22 Посмотреть сообщение
Добрый день.
Создаю динамически кнопки
Проблема в том что мне надо допустим если не будет отоброжатся первая кнопка то вторая поднялась на ее место и т.д. Подскажите плизз как это сделать
Используйте компонент ToolBar, там это реализуется автоматически.
mihali4 вне форума Ответить с цитированием
Старый 14.11.2008, 13:55   #4
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Если я правильно понял, вы создаете массив с кнопками и заполняете его в цикле:
Код:
for i := low(b) to high(b) do begin
Тогда зачем вы указываете индексы константами (цифрами)?:
Код:
b[0] := TButton.Create(nil);
b[0].Caption := IntToStr(i + 1);
b[0].Width := 50;
b[0].Height := 20;
//...
Может лучше так:
Код:
b[i] := TButton.Create(nil);
b[i].Caption := IntToStr(i + 1);
b[i].Width := 50;
b[i].Height := 20;
//...
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 14.11.2008, 14:10   #5
Sveta22
 
Регистрация: 14.11.2008
Сообщений: 8
По умолчанию

Цитата:
Используйте компонент ToolBar, там это реализуется автоматически.
Да использовала как раз то что мне нужно было, но увы нужно подругому(
Sveta22 вне форума Ответить с цитированием
Старый 14.11.2008, 14:12   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
но увы нужно подругому
Что именно "нужно по-другому"?
Вам нужно кнопки отдельные, разбросанные по форме?
mihali4 вне форума Ответить с цитированием
Старый 14.11.2008, 14:14   #7
Sveta22
 
Регистрация: 14.11.2008
Сообщений: 8
По умолчанию

VVM Задание такое, нужны кнопки каждая из которых запускает определенный ексешник, есть группа пользователей которые видят кнопки по разному т.е допустим админ видит все кнопки а юсер только 3
Sveta22 вне форума Ответить с цитированием
Старый 14.11.2008, 14:16   #8
Sveta22
 
Регистрация: 14.11.2008
Сообщений: 8
По умолчанию

Цитата:
Вам нужно кнопки отдельные, разбросанные по форме?
Ну можно и так сказать
Sveta22 вне форума Ответить с цитированием
Старый 14.11.2008, 14:18   #9
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Цитата:
VVM Задание такое, нужны кнопки каждая из которых запускает определенный ексешник, есть группа пользователей которые видят кнопки по разному т.е допустим админ видит все кнопки а юсер только 3
А как программа должна различать кому сколько кнопок показывать (кто работает за компои - user или admin)?
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 14.11.2008, 14:22   #10
Sveta22
 
Регистрация: 14.11.2008
Сообщений: 8
По умолчанию

Цитата:
А как программа должна различать кому сколько кнопок показывать (кто работает за компои - user или admin)?
Ну я делаю проверку существует ли путь к файлу ( так же можно доступ перекрыть к файлу и все) если нет то не отображается кнопка
Sveta22 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поделитесь компонентом Михаил Юрьевич Компоненты Delphi 2 27.04.2008 10:52
Помогите пожалуста с компонентом Terran Компоненты Delphi 3 02.02.2008 14:28
помогите с компонентом ICQClient xakkkkker Компоненты Delphi 1 25.12.2007 14:24
помогите с компонентом NMSMTP xakkkkker Компоненты Delphi 1 15.12.2007 15:05
Работа с компонентом StringGrid! Abbatik Помощь студентам 2 24.11.2007 17:20