Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цикл нажатия Button 
:(
    Опции темы
malxazibb
Дата 30.9.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.8.2009

Репутация: нет
Всего: нет



Привет всем.

Может кто подскажет.
На форме лежат Button1, ComboBox1, ComboBox2, ComboBox3, ComboBox4;
При создании форми появляется ComboBox1 остальние не видни. При нажатии Button1 появляется ComboBox2.

вопрос такои (както сам не смог): хочу чтоб при втором нажатии Button1 появлялас ComboBox3, при следуюшем нажатии ComboBox4 и т.д.


заранее благодарен.
PM MAIL   Вверх
Rodman
Дата 30.9.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



1. Проверять видимость уже открытых комбобоксов и следующий открывать
2. Сделай глобальную переменную или массив де записуй кто у тя светится а кто нет
PM MAIL WWW Skype GTalk YIM MSN   Вверх
AKATAN
  Дата 30.9.2009, 17:00 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 30.9.2008
Где: Украина

Репутация: 1
Всего: 1



Задача весьма тривиальная.

Не надо массив. Просто можно юзать свойство Visible у комбобоксов.

Держи код юнита:
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.Visible := false;

  ComboBox2.Visible := false;
  ComboBox3.Visible := false;
  ComboBox4.Visible := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ComboBox1.Visible then
    begin
     ComboBox1.Visible := false;
     ComboBox2.Visible := true;
    end else

  if ComboBox2.Visible then
    begin
     ComboBox2.Visible := false;
     ComboBox3.Visible := true;
    end else

  if ComboBox3.Visible then
    begin
     ComboBox3.Visible := false;
     ComboBox4.Visible := true;
    end

end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  ComboBox3.Visible := true;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
begin
  ComboBox4.Visible := false;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
  Button1.Visible := true;
end;

end.


Это сообщение отредактировал(а) AKATAN - 30.9.2009, 17:03
PM MAIL ICQ   Вверх
THandle
  Дата 30.9.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Если имена именно такие(стандартные, по порядку), можно сделать как-то так:
Код


{ Количество ComboBox'ов }
const
  CB_COUNT = 5;

procedure TForm2.Button1Click(Sender: TObject);
{$J+}
const
  Number: Integer = 2;
{$J-}
begin
  if Number <= CB_COUNT then
  begin
    TControl(FindComponent('ComboBox' + IntToStr(Number))).Visible := True;
    Inc(Number);
  end;
end;


Если же имена другие(понятные), то можно создать массив с этими именами, и точно так же показывать последующий элемент массива.
PM   Вверх
malxazibb
Дата 30.9.2009, 21:16 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.8.2009

Репутация: нет
Всего: нет



Друзя собеседники сам нашол виход по моему идеальный:
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Visible:=true;
ComboBox2.Visible:=false;
ComboBox3.Visible:=false;
ComboBox4.Visible:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
case (Sender as TButton).Tag of
0: ComboBox2.Visible:=true;
1: ComboBox3.Visible:=true;
2: ComboBox4.Visible:=true;
end;
with (Sender as TButton) do
Tag:=Tag+1;
end;

end.


спасибо всем за подсказки.

Это сообщение отредактировал(а) malxazibb - 30.9.2009, 21:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.