![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сетка участников соревнований [D7, WinXP]
SmallCod © (2006-05-11 23:30:00)Вот приспичило сделать сетку участников соревнований в проге. И даже не имею понятия с чего начать. Сетка должна быть вида
1
> 1
2
> 1
3
> 4
4
Обычная олимпийская система соревнований на выбывание. Сначала попарно участвуют "1" и "2", из которых выигрывает "1". Во второй паре выигрывает "4". В финале между ними выигрывает снова "1".
Количество участников на старте - всегда разное, но менее 40. Двойной клик на лейбле показывает, что данный участник, записанный в лейбле, выиграл и проходит в следующий тур соревнований.
Разместить Tlabel везде, сложности в управлении (описывать для каждого лейбла события - огромное количество процедур). Клонировать нужный объект - так не знаю, как управлять созданными лейблами, как приписать им событие, к примеру по двойному клику на лейбле запустить нужную процедуру.
Подскажите что - нибудь.
SmallCod (2006-05-19 00:28:00) [1]Нашел способ.
Вопросов больше нет.
SmallCod (2006-05-15 22:56:00) [2]Сроки поджимают :( А нигде про присвоение созданному компоненту событий найти не смог. Покажите хоть какой нить левый рабочий пример такого присвоения.
SmallCod (2006-05-14 17:36:00) [3]Сорри, если слишком сложно выражался... первый пост был для получения предложений реализации (или через динамическое создание лейблов или через статическое размещение максимально возможного для сетки количества лейблов и тд). Перефразирую попроще и в более частном порядке, так как другие вопросы уже отпали.
Есть лейбл. Много лейблов (все они как результат первого через Create), расплоложенных вертикально.
Если на первом исходном лейбле кликнуть - рядом появится другой под диагонали, задается через вкладку Events.
Задача.
Как присвоить создающимися лейблам на onClick вызов процедуры!
Sergio77 (2006-05-13 20:46:00) [4]тебе нужна прога для жеребьевки ил что?
не понятно...
SmallCod (2006-05-13 16:27:00) [5]С созданием компонентов немного разобрался. А вот унаследование событий так и не получается.
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 также плодился.
AlexWlad (2006-05-12 18:39:00) [6]Информация об участнике - TPlayer.
Массив №1 - Участники - array[...] of TPlayer
Тур соревнования -
TTour record
p1 : TPlayer;
p2 : TPlayer;
winner : TPlayer;
end;
Массив №2 - Туры - array of TTour
Первый тур заполняется вручную, остальные - на основе winner'ов из первого.
Отображать проще в StringGrid или ListView в режиме vsReport.
Но лучше самому рисовать например на Image, используя для вычисления позиций "виртуальную сетку".
Сергей М. (2006-05-12 13:34:00) [7]
> 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;
Плохиш (2006-05-12 13:22:00) [8]
> SmallCod © (12.05.06 13:06) [7]
> Спасиб за дельные советы. Проблема в создании массива элементов
> и их идентификации.
> 1) Возможно ли созданному лейблу приписать событие?
Да, события - это свойства процедурального типа.
> Если возможно, то как?
С помощью операции присваивания :=
> 2) Как идентифицировать созданный объект?
У всех визуальных объектов имеется свойство Tag, с которым программист может распоряжаться по-своему.
PS. Если бы Вы выполнили рекомендации, данные в [1], [4] и [5], то с вероятностью 90% эта ветка была бы не нужна. А так объяснить Вам что-либо очень сложно из-за отсутствия у Вас базовых знаний :-(
SmallCod (2006-05-12 13:06:00) [9]Спасиб за дельные советы. Проблема в создании массива элементов и их идентификации.
1) Возможно ли созданному лейблу приписать событие? Если возможно, то как?
2) Как идентифицировать созданный объект?
_RusLAN. В вашем примере какое будет имя созданного объекта?
REA (2006-05-12 11:58:00) [10]>Мое слабое место - Create
Ну это еще полбеды - у некоторых слабое место Destroy.
_RusLAN (2006-05-12 11:31:00) [11]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
balepa (2006-05-12 07:45:00) [12]
> SmallCod © (12.05.06 01:32) [2]
>
> > покупайте книгу по паскалю.
> Тоже весьма разумно. Вроде пишу про Tlabel, диктуетe Pascal.
>
>
> Мое слабое место - Create. И толком понять, как его применить
> к созданию нового лейбла, а также приписать ему событие,
> к примеру, OnClick, я не знаю.
Ну покупайте книжку по Delphi
antonn (2006-05-12 07:38:00) [13]можно на TBitmap рендерить:)
самому.
SmallCod (2006-05-12 01:32:00) [14]
> я так понял нужно за-вас написать программу?
>
Не правильно Вы поняли. Читайте последнее предложение внимательнее! Мне нужен совет, а не Ваша работа!
> покупайте книгу по паскалю.
Тоже весьма разумно. Вроде пишу про Tlabel, диктуетe Pascal.
Мое слабое место - Create. И толком понять, как его применить к созданию нового лейбла, а также приписать ему событие, к примеру, OnClick, я не знаю.
Eraser (2006-05-11 23:51:00) [15]
> SmallCod © (11.05.06 23:30)
я так понял нужно за-вас написать программу?
> Подскажите что - нибудь.
покупайте книгу по паскалю.