![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно показать n кнопок на панеле [D7, XP]
Любитель © (2006-12-18 11:22:00)Как можно показать n кнопок на панеле.
n - вводиться пользователем.
novill (2006-12-21 12:54:00) [21]Ega23, крайне интересует твое цензруное мнение о [25]
Или это твой виртуал?
novill (2006-12-21 12:52:00) [22]> [24] Ega23 © (21.12.06 12:46)
акваланг.
Любитель (2006-12-21 12:51:00) [23]Тьфу ты совсем запутался
procedure TForm1.Button8Click(Sender: TObject);
begin
if CheckBox1.Checked then
Button1.Visible:=True;
if CheckBox2.Checked then
Begin
Button1.Visible:=True;
Button2.Visible:=True;
end;
if CheckBox3.Checked then
begin
Button1.Visible:=True;
Button2.Visible:=True;
Button3.Visible:=True;
end;
Сделать по короче
что бы при выборе определенного CheckBox N показывались N кнопок
begin
Button[N].Visible:=True;
Ega23 (2006-12-21 12:46:00) [24]
> novill © (21.12.06 12:28) [23]
Это ужасно.
novill (2006-12-21 12:28:00) [25]> [20] Любитель (21.12.06 11:56)
Зануда!!!
Создай новый проект, брось на форму 11 кнопок, radiogroup с элементами от 0 до 10, замени текст модуля на этот код и дважды кликни на последней созданной кнопке.
Запускай!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
RadioGroup1: TRadioGroup;
Button11: TButton;
procedure B_init;
procedure Button11Click(Sender: TObject);
private
b_arr: array [1..10] of TButton;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.B_init;
begin
b_arr[1]:=Self.Button1;
b_arr[2]:=Self.Button2;
b_arr[3]:=Self.Button3;
b_arr[4]:=Self.Button4;
b_arr[5]:=Self.Button5;
b_arr[6]:=Self.Button6;
b_arr[7]:=Self.Button7;
b_arr[8]:=Self.Button8;
b_arr[9]:=Self.Button9;
b_arr[10]:=Self.Button10;
end;
procedure TForm1.Button11Click(Sender: TObject);
var i:integer;
begin
if b_arr[1]=nil then B_init;
for i:=1 to 10 do
b_arr[i].Visible:=i<=RadioGroup1.ItemIndex;
end;
end.
Если не получится - хорошо подумай о работе на свежем воздухе!
Anatoly Podgoretsky (2006-12-21 12:18:00) [26]> Любитель (21.12.2006 10:14:11) [11]
Что за хитрый такой CheckBox с несколькими числовыми значениями и индексом?
Народ наверно голову ломает, пытаясь понять это. Их всего твоего вопроса понятно только, что есть 10 скрытых кнопок
Плохиш (2006-12-21 11:59:00) [27]
> Любитель (21.12.06 11:56) [20]
> мне это надо сделать на события нажатия кнопки
С моей стороны никаких возражений, делай.
Любитель (2006-12-21 11:56:00) [28]мне это надо сделать на события нажатия кнопки
ЮЮ (2006-12-21 10:49:00) [29]и кто такой CheckBox, откуда у него Index?
Код, извени, ты приводил :)
ЮЮ (2006-12-21 10:46:00) [30]так писать надо в методе формы, а не где придется
Любитель (2006-12-21 10:41:00) [31]Button1.Visible := CheckBox.Index >= 1;
ругаеться что неизвестный индификатор
ЮЮ (2006-12-21 10:38:00) [32]Если CheckBox.Index = 5, то у Button1..Button5 Visible будет True, а у Button6..Button10 - false, т.к. 5 >= 5 - истина, а т.к. 5 >= 6 - ложь
Ega23 (2006-12-21 10:35:00) [33]
> Что то я не догнал ????
Что ты не догнал? Что результатом CheckBox.Index >= 1; является или True или False?
ЮЮ (2006-12-21 10:35:00) [34]З.Ы. Проблему надо нормально описывать сразу, а не [11] посте через 3 дня
Любитель (2006-12-21 10:34:00) [35]Что то я не догнал ????
Button1.Visible := CheckBox.Index >= 1;
...
Button10Visible := CheckBox.Index >= 10;
ЮЮ (2006-12-21 10:29:00) [36]
> [code]
> if CheckBox1.Index=1 then
> Button1.Visible:=True;
> if CheckBox1.Index=2 then
> Begin
> Button1.Visible:=True;
> Button2.Visible:=True;
> end;
> if CheckBox1.Index:=3 then
> begin
> Button1.Visible:=True;
> Button2.Visible:=True;
> Button3.Visible:=True;
> end;
> [/code]
Даже такое можно написать короче:
Button1.Visible := CheckBox.Index >= 1;
...
Button10Visible := CheckBox.Index >= 10;
P/S/ никто не мешает объявить массив Button и заполнить его один раз
Любитель (2006-12-21 10:14:00) [37]Есть... 10 скрытых кнопок... Пользователь их невидет, но они есть. Есть CheckBox, в нём значения от 1 до 10, выбирая одно из значений, пользователь выберет, сколько кнопок ему откроется (По порядку). Допустим пользователь выбрал число 7, тоесть надо 7-ми кнопкам присвоить значения Visible:=True; Представляешь, сколько надо на составление такой малой задачки.
Тоесть, надо написать, грубо говоря :
[code]
if CheckBox1.Index=1 then
Button1.Visible:=True;
if CheckBox1.Index=2 then
Begin
Button1.Visible:=True;
Button2.Visible:=True;
end;
if CheckBox1.Index:=3 then
begin
Button1.Visible:=True;
Button2.Visible:=True;
Button3.Visible:=True;
end;
[/code]
а можно что бы просто пустить цикл,что-то вроде
[code]
a:=CheckBox.Index;
for i:=1 to a do
begin
Button[i].Visible:=True;
end;
[/code]
Anatoly Podgoretsky (2006-12-18 14:15:00) [38]> clickmaker (18.12.2006 14:08:09) [9]
Это задание для другого курса.
clickmaker (2006-12-18 14:08:00) [39]
> Поистине неистощима фантазия преподавателей информатики
да ну разве ж это фантазия? Вот если б в задаче стояло организовать их броуновское движение, с невыползанием за границу панели - это да.
RebroFF (2006-12-18 13:59:00) [40]
> Как можно показать n кнопок на панеле.
> n - вводиться пользователем.
Поистине неистощима фантазия преподавателей информатики.