![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добрый день, подскажите плз при помощи нажатия на кнопку создать
smartleds © (2007-09-26 11:18:00)на форме компонент Panel1, при следующем нажати рядом компонент Panel2 и т.д Panel[i]?
Галинка (2007-09-27 00:15:00) [1]Проверять надо MouseUp по-моему. Потому что она будет перерисовываться пока кнопка будет нажата. Мелькать может, и достаточно ощутимо.
Вася, да я ж не против. Я ж потому и написала, что "что-то типа". ))) Я хотела общую идею показать.
ПыСы: А разве в дельфи нет прикола, что при переопределении метода она сама синтаксис предложит?
Вася Правильный (2007-09-26 21:44:00) [2]
> TPanel[sender]
это чё за конструкция?
а панель у тебя навсегда залепленная останется, при выборе другой не отлепится...
Malik (2007-09-26 21:36:00) [3]Я чувствую, что поздно но хочется поучаствовать
...
procedure MyPanelsMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
...
procedure TForm1.MyPanelsMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TPanel[sender].BevelOuter:=bvLowered;
end;
...
for i:=0 to lenght(MyPanels)-1 do begin
MyPanels[i].BevelWidth:=2;
MyPanels[i].OnMouseDown:=MyPanelsMouseDown;
end;
...
Вася Правильный (2007-09-26 19:20:00) [4]
> Галинка © (26.09.07 19:01) [20]
> (соответствующее число параметров);
глупость
присваивается адрес, а не результат работы
Галинка (2007-09-26 19:01:00) [5]пишешь обработчик один раз, а при создании надо что-то типа:
ArrOfPanels[i-1].OnMouseUp = MyMouseUp(соответствующее число параметров);
Германн (2007-09-26 13:31:00) [6]
> Anatoly Podgoretsky © (26.09.07 13:21) [18]
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1190751106&n=18
Anatoly Podgoretsky (2007-09-26 13:21:00) [7]> smartleds (26.09.2007 12:39:14) [14]
Быстро только кошки плодятся
Вася Правильный (2007-09-26 13:03:00) [8]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1190438777&n=3
smartleds (2007-09-26 12:57:00) [9]Народ посоветуйте , понятную книжку по Делфи лучше на русском языке.
Вася Правильный (2007-09-26 12:56:00) [10]квадратные скобки в именах процедур, переменных и методов недопустимы
smartleds (2007-09-26 12:39:00) [11]Как раз это я сейчас и делаю...но очень толстые книжки , хочется побыстрее попробовать на практике, поэтому и спрашиваю.
Плохиш (2007-09-26 12:29:00) [12]
> я где то не прав?
В нежелании изучить основы используемого языка программирования.
smartleds (2007-09-26 12:25:00) [13]А как это обработчик привязать к каждой панели, я вот так попытался
Вот у меня есть массив панелей
var ArrOfPanels:array of TPanel;
Пытаюсь сделать так: обработчик вызывается при нажатии на i-ю панель
procedure TForm1.ArrOfPanels[i]Click(Sender: TObject);
begin
end;
Но Делфи ругается что ArrOfPanels не декларирован, я где то не прав?
Плохиш (2007-09-26 12:20:00) [14]
> smartleds (26.09.07 12:12) [10]
> А это можно сделать при помощи одного обработчика MouseDown
> или для каждой панели нужно писать свой?
При помощи одного - можно, но его надо к каждой панели привязать, а для желаемой отрисовки надо перекрыть метод Paint.
smartleds (2007-09-26 12:12:00) [15]А это можно сделать при помощи одного обработчика MouseDown или для каждой панели нужно писать свой?
Вася Правильный (2007-09-26 12:08:00) [16]можно
smartleds (2007-09-26 11:59:00) [17]Здорово, получилось, то что нужно при каждом нажатии на button3 появляется панель.
А вот еще вопрос можно ли из этого ряда панелей выделить нужную при помощи мыши по событию MouseDown и чтоб выбранная панель как то выделилась рамкой или цветом?
Kolan (2007-09-26 11:48:00) [18]> ArrOfPanels:array of TPanel;
Зачам он тебе?
alles (2007-09-26 11:40:00) [19]вместо if (i>2) then надо if (i>1) then
sorry
alles (2007-09-26 11:39:00) [20]var i:integer;
ArrOfPanels:array of TPanel;
procedure Form1.Create;
begin
i:=0;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Inc(i);
SetLength(ArrOfPanels,i);
ArrOfPanels[i-1]:=TPanel.Create(Form1);
ArrOfPanels[i-1].Parent:=Form1;
if (i>2) then
ArrOfPanels[i-1].Left:=ArrOfPanels[i-2].Left+ArrOfPanels[i-2].Width;
end;
писАл без делфи, могут быть ошибки