Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизСетка участников соревнований Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c