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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 23:01   #1
rivz2006
 
Регистрация: 10.11.2010
Сообщений: 5
Сообщение Imported ListBox to button

Программа на делфи Местит в себе два типа компонентов:1 - ЛистБокс и 6 - Кнопок. В боксе находятся строки в виде списка. 1я кнопка выполняет действия: при ее нажатии строки должны присвоится кнопкам.
Пример:
Button1.Caption:=ListBox1.Items.Str ings[1].

Но если у меня в программе 6 кнопок которым нужно присвоить значение(имя со списка) а в Бокс всего четыри строки, тоисть первым 4м кнопкам присвоить значения а 2е кнопки (Button5 и Button6) скрыть.
Как это сделать?

P.S.: нужно сделать чтоб эту прпоцедуру также можно было использовать и для 30 кнопок!
rivz2006 вне форума Ответить с цитированием
Старый 06.12.2011, 22:22   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

я бы вкинул вкопки в контейнер(к примеру панель или гроббокс).
Далее не хитрый код:
Код:
function DoWork(var aListBox:TlistBox; aPanel:TPanel);
var
  iB:Integer;
 begin
   For iB:=0 to aPanel.ComponentCount -1 do
   begin
      if (aPanel.components[iB] is TButton) then
      begin
	  try
	  (aPanel.components[iB] as TButton).Visible:=True;
       (aPanel.components[iB] as TButton).Capion:=aListBox.Items.strings[iB];  
      except //Если можно обратиться к строке aListBox.Items.strings[iB] назовём компонент
       	(aPanel.components[iB] as TButton).Visible:=False;
      end;		
      end;	  
   end;
 end;
try except end я использую чтобы определить, можно ли обратиться к aListBox.Items.strings[iB]. Должна выпасть ошибка, ведь если там ничего нет.. то вроде исключение.

Но на всякий., вместо Try except поставте проверку, если try except не вывалвает исключений:
Код:
if not (aListBox.Items.strings[iB] = '') then
begin
  (aPanel.components[iB] as TButton).Visible:=True;
  (aPanel.components[iB] as TButton).Capion:=aListBox.Items.strings[iB];      
end else
   (aPanel.components[iB] as TButton).Visible:=False;
Человек_Борща вне форума Ответить с цитированием
Старый 07.12.2011, 13:13   #3
rivz2006
 
Регистрация: 10.11.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
я бы вкинул вкопки в контейнер(к примеру панель или гроббокс).
Далее не хитрый код:
Код:
function DoWork(var aListBox:TlistBox; aPanel:TPanel);
var
  iB:Integer;
 begin
   For iB:=0 to aPanel.ComponentCount -1 do
   begin
      if (aPanel.components[iB] is TButton) then
      begin
	  try
	  (aPanel.components[iB] as TButton).Visible:=True;
       (aPanel.components[iB] as TButton).Capion:=aListBox.Items.strings[iB];  
      except //Если можно обратиться к строке aListBox.Items.strings[iB] назовём компонент
       	(aPanel.components[iB] as TButton).Visible:=False;
      end;		
      end;	  
   end;
 end;
try except end я использую чтобы определить, можно ли обратиться к aListBox.Items.strings[iB]. Должна выпасть ошибка, ведь если там ничего нет.. то вроде исключение.

Но на всякий., вместо Try except поставте проверку, если try except не вывалвает исключений:
Код:
if not (aListBox.Items.strings[iB] = '') then
begin
  (aPanel.components[iB] as TButton).Visible:=True;
  (aPanel.components[iB] as TButton).Capion:=aListBox.Items.strings[iB];      
end else
   (aPanel.components[iB] as TButton).Visible:=False;
А можно ваш меил для более детальной консультации!
rivz2006 вне форума Ответить с цитированием
Старый 07.12.2011, 14:32   #4
rivz2006
 
Регистрация: 10.11.2010
Сообщений: 5
По умолчанию

А если попробывать доработать такой вот код:

procedure TForm1.downClick(Sender: TObject);
var j: integer;
begin
up.Visible:=true;
Group_Number:=Group_Number+1;
if Group_Number<=Group_quantity
then
begin
j:=(6*Group_Number)-1;
b6.Caption:=l2.Items.Strings[j];
b5.Caption:=l2.Items.Strings[j-1];
b4.Caption:=l2.Items.Strings[j-2];
b3.Caption:=l2.Items.Strings[j-3];
b2.Caption:=l2.Items.Strings[j-4];
b1.Caption:=l2.Items.Strings[j-5];
end
else
begin
|<--------Место для вставки кода
down.Visible:=false;
// Buttons_Left - оставшее кол-во строк
end;
end;


Программа практически работает но без части кода плохо фунционирует
После нахождения части код программа даст толчек к написанию остальных программ одного большого проэкта.
rivz2006 вне форума Ответить с цитированием
Старый 07.12.2011, 14:38   #5
rivz2006
 
Регистрация: 10.11.2010
Сообщений: 5
По умолчанию

Lines: Integer; // количество строк в списке
Group_quantity: Integer; // целое количество групп
Group_Number: Integer; // номер текущей отображаемой группы
Buttons_Left: Integer; // кол-во оставшихся кнопок
down и up - кнопки вверх\вниз
b1..b6 кнопки которым присваивается строка
rivz2006 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как привязать компоненту TComboBox к Button, чтобы при нажатии Button, данные из ComboBox вводились в TstringGrid Marta_ Помощь студентам 2 15.10.2011 01:02
Button и ListBox (delphi) CAMOBAP Помощь студентам 1 13.03.2011 14:43
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23
button blackstersl Общие вопросы Delphi 7 29.08.2008 15:31
Unit 'MyLib' implicitly imported into package 'MyPackage'. как исправить? SkAndrew Компоненты Delphi 0 06.04.2008 00:28