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

Вниз

Добрый день, подскажите плз при помощи нажатия на кнопку создать   Найти похожие ветки 

 
smartleds   (2007-09-26 11:18) [0]

на форме компонент Panel1, при следующем нажати рядом компонент Panel2 и т.д Panel[i]?


 
Вася Правильный   (2007-09-26 11:24) [1]

o:=TPanel.Create
и установка параметров местонахождения и парента


 
smartleds   (2007-09-26 11:33) [2]

procedure TForm1.Button3Click(Sender: TObject);

begin
panel2.create;
end;
Что то не получается....


 
alles ©   (2007-09-26 11:34) [3]

panel2.parent:=Form1


 
Kolan ©   (2007-09-26 11:36) [4]

> Что то не получается&#133

procedure TForm1.Button3Click(Sender: TObject);
begin
 with TPanel.Create(Self) do
 begin
   Top := 100;
   Left := 100;
   Parent := Self;
   Visible := True;
 end;
end;


 
alles ©   (2007-09-26 11:39) [5]

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;
писАл без делфи, могут быть ошибки


 
alles ©   (2007-09-26 11:40) [6]

вместо if (i>2) then надо if (i>1) then
sorry


 
Kolan ©   (2007-09-26 11:48) [7]

> ArrOfPanels:array of TPanel;

Зачам он тебе?


 
smartleds   (2007-09-26 11:59) [8]

Здорово, получилось, то что нужно при каждом нажатии на button3 появляется панель.
А вот еще вопрос можно ли из этого ряда панелей выделить нужную при помощи мыши по событию MouseDown и чтоб выбранная  панель как то выделилась рамкой или цветом?


 
Вася Правильный   (2007-09-26 12:08) [9]

можно


 
smartleds   (2007-09-26 12:12) [10]

А это можно сделать при помощи одного обработчика MouseDown или для каждой панели нужно писать свой?


 
Плохиш ©   (2007-09-26 12:20) [11]


> smartleds   (26.09.07 12:12) [10]
> А это можно сделать при помощи одного обработчика MouseDown
> или для каждой панели нужно писать свой?

При помощи одного - можно, но его надо к каждой панели привязать, а для желаемой отрисовки надо перекрыть метод Paint.


 
smartleds   (2007-09-26 12:25) [12]

А как это обработчик привязать к каждой панели, я вот так попытался  
Вот у меня есть массив панелей
var   ArrOfPanels:array of TPanel;
Пытаюсь сделать так: обработчик вызывается при нажатии на i-ю панель  

procedure TForm1.ArrOfPanels[i]Click(Sender: TObject);
begin

end;
Но Делфи ругается что ArrOfPanels не декларирован, я где то не прав?


 
Плохиш ©   (2007-09-26 12:29) [13]


> я где то не прав?

В нежелании изучить основы используемого языка программирования.


 
smartleds   (2007-09-26 12:39) [14]

Как раз это я сейчас и делаю...но очень толстые книжки , хочется побыстрее попробовать на практике, поэтому и спрашиваю.


 
Вася Правильный   (2007-09-26 12:56) [15]

квадратные скобки в именах процедур, переменных и методов недопустимы


 
smartleds   (2007-09-26 12:57) [16]

Народ посоветуйте , понятную книжку по Делфи лучше на русском языке.


 
Вася Правильный   (2007-09-26 13:03) [17]

http://delphimaster.net/view/15-1190438777/


 
Anatoly Podgoretsky ©   (2007-09-26 13:21) [18]

> smartleds  (26.09.2007 12:39:14)  [14]

Быстро только кошки плодятся


 
Германн ©   (2007-09-26 13:31) [19]


> Anatoly Podgoretsky ©   (26.09.07 13:21) [18]

http://delphimaster.net/view/15-1190438777/


 
Галинка ©   (2007-09-26 19:01) [20]

пишешь обработчик один раз, а при создании надо что-то типа:

ArrOfPanels[i-1].OnMouseUp = MyMouseUp(соответствующее число параметров);


 
Вася Правильный   (2007-09-26 19:20) [21]


> Галинка ©   (26.09.07 19:01) [20]
> (соответствующее число параметров);

глупость
присваивается адрес, а не результат работы


 
Malik ©   (2007-09-26 21:36) [22]

Я чувствую, что поздно но хочется поучаствовать

...
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 21:44) [23]


> TPanel[sender]

это чё за конструкция?
а панель у тебя навсегда залепленная останется, при выборе другой не отлепится...


 
Галинка ©   (2007-09-27 00:15) [24]

Проверять надо MouseUp по-моему. Потому что она будет перерисовываться пока кнопка будет нажата. Мелькать может, и достаточно ощутимо.

Вася, да я ж не против. Я ж потому и написала, что "что-то типа". ))) Я хотела общую идею показать.

ПыСы: А разве в дельфи нет прикола, что  при переопределении метода она сама синтаксис предложит?



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

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

Наверх




Память: 0.52 MB
Время: 0.023 c
1-1184324771
clickmaker
2007-07-13 15:06
2007.10.21
Как открыть веб-папку программно?


15-1190403271
korneley
2007-09-21 23:34
2007.10.21
Отсутствуют "Последние 10 сообщений на форумах"


2-1190656191
Aser
2007-09-24 21:49
2007.10.21
Как получить указатель (handle) на иконку программы в трее?


2-1190878591
fff
2007-09-27 11:36
2007.10.21
курсор


3-1181547201
Krants
2007-06-11 11:33
2007.10.21
Разрешить изменения текста в TDBEdit