Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Управлять свойствами контролов, созданных Run Time  (Прочитано 7636 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rick
Интересующийся

kz
Offline Offline

« : 31-03-2011 12:26 » 

Здравствуйте. Программно создается массив StaticText'ов
Код: (Delphi)
private
    { Private declarations }
    procedure onMouseUpStaticx(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
//...........................................................................
var
  Form1: TForm1;
   CurDispatch: IDispatch; {save the interface globally }
   MyButtons:array of array of TStaticText;
   timeLim: integer; // time limit of test
   qCount:integer;   // amount of questions
   testName:string;  // test's file name
   testFile:file;    // test file

   ansArr:array of integer;
//.....................................................
//.....................................................
procedure TForm1.btnSetQuestionsClick(Sender: TObject);
 var i, j,x: byte;
 n,k: integer;
 count:String;
begin
count:=inputbox('Test','Enter amount of questions','1');
try
n := StrToInt(count);
qCount:=n;
except
on EConvertError do ShowMessage('Someting is wrong');
end;
setlength(Mybuttons,n,4);
setlength(ansArr,n);
k:=0;
 for i:=0 to n-1 do
  for j:=0 to 3 do begin
   inc(k);
   MyButtons[i,j]:=TStaticText.Create(Panel1);
   MyButtons[i,j].Parent := self;
   MyButtons[i,j].Top:= ((i+1)*25)+33;//((i+1)-1)*Arr3[i,j].Height+50;
   MyButtons[i,j].Left:=((j+1)*20)+830;//((j+1)-1)*Arr3[i,j].Width+800;
   MyButtons[i,j].BorderStyle :=sbsSunken;
   MyButtons[i,j].AutoSize :=false;
   MyButtons[i,j].Alignment := taCenter;
   MyButtons[i,j].Width:=20;
   MyButtons[i,j].Height:=20;
   MyButtons[i,j].Color :=clLime;
   MyButtons[i,j].Tag:=k;
   MyButtons[i,j].Caption :=IntToStr (k);
   MyButtons[i,j].Font.Size:=10;
   MyButtons[i,j].Name := 'Btn'+intToStr(k);
   TStaticText(MyButtons[i,j]).onMouseUp:=onMouseUpStaticx; {new components event}
end;
 for i:=0 to n-1 do
   for j:=0 to 0  do begin
    MyButtons[i,j].Caption :='a';
end;
for i:=0 to n-1 do
   for j:=1 to 1  do begin
    MyButtons[i,j].Caption :='b';
end;
for i:=0 to n-1 do
   for j:=2 to 2  do begin
    MyButtons[i,j].Caption :='c';
end;
for i:=0 to n-1 do
   for j:=3 to 3  do begin
    MyButtons[i,j].Caption :='d';
end;
end;
//.....................................................
procedure TForm1.onMouseUpStaticx(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
// вот здесь все это должно происходить
if button = mbLeft then
end;
//..................................................................
Они играют роль ячеек вариантов ответов:
a b c d
a b c d
..........
a b c d
При клике левой кноркой на одной из ячеек должны блокироваться остальные ее "сородичи" из этого ряда.
Вот как это реализовано в VB

* TestBed.rar (12.21 Кб - загружено 749 раз.)
« Последнее редактирование: 31-03-2011 13:37 от Джон » Записан
zubr
Гость
« Ответ #1 : 31-03-2011 13:02 » 

Код:
for j := 0 to 3 do
begin
   if MyButtons[TComponent(Sender).Tag, j] <> TStaticText(Sender) then
   MyButtons[TComponent(Sender).Tag, j].Enabled := False;
end;
Записан
rick
Интересующийся

kz
Offline Offline

« Ответ #2 : 31-03-2011 13:07 » 

к сожалению не работае: блокируется не тот ряд ячеек где кликнул, а ниже на 4 ряда(
Записан
zubr
Гость
« Ответ #3 : 31-03-2011 13:46 » 

Вместо MyButtons[i,j].Tag:=k; сделай MyButtons[i,j].Tag:=i;
Записан
rick
Интересующийся

kz
Offline Offline

« Ответ #4 : 31-03-2011 13:53 » 

Спасибо, работает!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines