Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Сетка участников соревнований   Найти похожие ветки 

 
SmallCod ©   (2006-05-11 23:30) [0]

Вот приспичило сделать сетку участников соревнований в проге. И даже не имею понятия с чего начать. Сетка должна быть вида
1
    > 1
2
          > 1
3
   >  4
4
Обычная олимпийская система соревнований на выбывание. Сначала попарно участвуют "1" и "2", из которых выигрывает "1". Во второй паре выигрывает "4". В финале между ними выигрывает снова "1".
Количество участников на старте - всегда разное, но менее 40. Двойной клик на лейбле показывает, что данный участник, записанный в лейбле, выиграл и проходит в следующий тур соревнований.
Разместить Tlabel везде, сложности в управлении (описывать для каждого лейбла события - огромное количество процедур). Клонировать нужный объект - так не знаю, как управлять созданными лейблами, как приписать им событие, к примеру по двойному клику на лейбле запустить нужную процедуру.
Подскажите что - нибудь.


 
Eraser ©   (2006-05-11 23:51) [1]


> SmallCod ©   (11.05.06 23:30)

я так понял нужно за-вас написать программу?

> Подскажите что - нибудь.

покупайте книгу по паскалю.


 
SmallCod ©   (2006-05-12 01:32) [2]


> я так понял нужно за-вас написать программу?
>
Не правильно Вы поняли. Читайте последнее предложение внимательнее! Мне нужен совет, а не Ваша работа!

> покупайте книгу по паскалю.
Тоже весьма разумно. Вроде пишу про Tlabel, диктуетe Pascal.

Мое слабое место - Create. И толком понять, как его применить к созданию нового лейбла, а также приписать ему событие, к примеру, OnClick, я не знаю.


 
antonn ©   (2006-05-12 07:38) [3]

можно на TBitmap рендерить:)
самому.


 
balepa ©   (2006-05-12 07:45) [4]


> SmallCod ©   (12.05.06 01:32) [2]
>
> > покупайте книгу по паскалю.
> Тоже весьма разумно. Вроде пишу про Tlabel, диктуетe Pascal.
>
>
> Мое слабое место - Create. И толком понять, как его применить
> к созданию нового лейбла, а также приписать ему событие,
>  к примеру, OnClick, я не знаю.

Ну покупайте книжку по Delphi


 
_RusLAN ©   (2006-05-12 11:31) [5]

SmallCod ©   (12.05.06 1:32) [2]
Мое слабое место - Create


var l: TLabel;
...
// frmMain - форма куда помещается label;
l:= TLabel.Create(frmMain);
l.Parent := frmMain;
l.Left := 530;
l.Left := 200;
l.Caption := "dlfsdlfl";

но чтобы устранить причину проблемы то
Eraser ©   (11.05.06 23:51) [1]
покупайте книгу по паскалю.

+
balepa ©   (12.05.06 7:45) [4]
покупайте книжку по Delphi


 
REA   (2006-05-12 11:58) [6]

>Мое слабое место - Create
Ну это еще полбеды - у некоторых слабое место Destroy.


 
SmallCod ©   (2006-05-12 13:06) [7]

Спасиб за дельные советы. Проблема в создании массива элементов и их идентификации.
1) Возможно ли созданному лейблу приписать событие? Если возможно, то как?
2) Как идентифицировать созданный объект?

_RusLAN. В вашем примере какое будет имя созданного объекта?


 
Плохиш ©   (2006-05-12 13:22) [8]


> SmallCod ©   (12.05.06 13:06) [7]
> Спасиб за дельные советы. Проблема в создании массива элементов
> и их идентификации.
> 1) Возможно ли созданному лейблу приписать событие?

Да, события - это свойства процедурального типа.

> Если возможно, то как?

С помощью операции присваивания :=

> 2) Как идентифицировать созданный объект?

У всех визуальных объектов имеется свойство Tag, с которым программист может распоряжаться по-своему.

PS. Если бы Вы выполнили рекомендации, данные в [1], [4] и [5], то с вероятностью 90% эта ветка была бы не нужна. А так объяснить Вам что-либо очень сложно из-за отсутствия у Вас базовых знаний :-(


 
Сергей М. ©   (2006-05-12 13:34) [9]


> 1) Возможно ли созданному лейблу приписать событие? Если
> возможно, то как?


Возможно.

СозданныйЛейбл := TLabel.Create(компонент-владелец);
СозданныйЛейбл.Parent := любой компонент-наследник TWinControl, который будет отвечать за обработку сообщений для TLabel
СозданныйЛейбл.OnClick := Идентификатор метода существующего объекта любого класса, имеющий прототип TNotifyEvent (например, TMyForm.MouseClickHandler(Sender: TObject))


> 2) Как идентифицировать созданный объект?


Любой TLabel имеет св-во Tag.

Напимер, в теле метода TMyForm.MouseClickHandler:

if Sender is TLabel then
 with TLabel(Sender) do
   case Tag of
      ТакойТоТэг: Такой То Лейбл "щелкнули";
      ДругойТэг:   Другой Лейбл "щелкнули";
      ..
   end;


 
AlexWlad ©   (2006-05-12 18:39) [10]

Информация об участнике - TPlayer.
Массив №1 - Участники - array[...] of TPlayer
Тур соревнования -

TTour record
  p1 : TPlayer;
  p2 : TPlayer;
  winner : TPlayer;
end;

Массив №2 - Туры - array of TTour

Первый тур заполняется вручную, остальные - на основе winner"ов из первого.

Отображать проще в StringGrid или ListView в режиме vsReport.
Но лучше самому рисовать например на Image, используя для вычисления позиций "виртуальную сетку".


 
SmallCod ©   (2006-05-13 16:27) [11]

С созданием компонентов  немного разобрался. А вот унаследование событий так и не получается.

procedure TForm1.ClickComp(Sender: TObject);
var
 ControlText: string;
begin
 with TControlClass (Sender.ClassType).Create (self) do
 begin
   Parent := (Sender as TControl).Parent;
   Left := (Sender as TControl).Left;
   Top := (Sender as TControl).Top + 20;
   onclick:=ClickComp;
   SetLength (ControlText, 50);
   (Sender as TControl).GetTextBuf(PChar(ControlText), 50);
   ControlText := PChar(ControlText);
   SetTextBuf (PChar (ControlText));
 end;
end;  


Что не так? Как унаследовать событие? Хочу чтобы созданный Label на событие onClick также плодился.


 
Sergio77   (2006-05-13 20:46) [12]

тебе нужна прога для жеребьевки ил что?
не понятно...


 
SmallCod ©   (2006-05-14 17:36) [13]

Сорри, если слишком сложно выражался... первый пост был для получения предложений реализации (или через динамическое создание лейблов или через статическое размещение максимально возможного для сетки количества лейблов и тд). Перефразирую попроще и в более частном порядке, так как другие вопросы уже отпали.

Есть лейбл. Много лейблов (все они как результат первого через Create), расплоложенных вертикально.
Если на первом исходном лейбле кликнуть - рядом появится другой под диагонали, задается через вкладку Events.
Задача.
Как присвоить создающимися лейблам на onClick вызов процедуры!


 
SmallCod ©   (2006-05-15 22:56) [14]

Сроки поджимают :( А нигде про присвоение созданному компоненту событий найти не смог. Покажите хоть какой нить левый рабочий пример такого присвоения.


 
SmallCod ©   (2006-05-19 00:28) [15]

Нашел способ.
Вопросов больше нет.



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.057 c
3-1142429352
Emik
2006-03-15 16:29
2006.06.04
FIBPlus Tools


6-1138653753
Alexis
2006-01-30 23:42
2006.06.04
Мониторинг файла в Internet


2-1148013655
Мурзилка
2006-05-19 08:40
2006.06.04
Спец. символы


2-1147686587
Keks
2006-05-15 13:49
2006.06.04
ОЗУ компьютера


2-1147849669
Creative
2006-05-17 11:07
2006.06.04
программа не входит в цикл