![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ссылка на TStatusBar.Panel[0]
ser © (2004-09-16 11:07:00)Привет!
Паскаль знаю плохо, сильно не ругайте :)
Есть TStatusBar с двумя панелями.
Нужно объявить константную ссылку на панели.
Что-то типа
const
PanelOne := StatusBar1.Panel[0];
PanelTwo := StatusBar1.Panel[1];
Как это можно сделать?
ser (2004-09-16 13:30:00) [1]2Ega23:
Интересное предложение. В виде функций-оберток. Возьму на заметку.
Ega23 (2004-09-16 13:05:00) [2]begin...end © (16.09.04 13:04) [18]
Ну и исправить индекс в SetTExt и GetText
begin...end (2004-09-16 13:04:00) [3]
> [17] Ega23 © (16.09.04 12:57)
Он же сказал в [15], что у него панели меняются местами.
В смысле, индекс панели, текст которой он хочет менять, не остаётся постоянным.
Ega23 (2004-09-16 12:57:00) [4]2 ser (16.09.04 12:19) [15] :
TForm1=clacc(TForm)
......
private
function GetPanel0Text:String;
procedure SetPanel0Text(const Value:String);
public
property Panel0Text:String Read GetPanel0Text Write SetPanel0Text;
end;
function TForm1.GetPanel0Text:String;
begin
Result:=StatusBar.Panel[0].Text;
end;
procedure TForm1.SetPanel0Text(const Value:String);
begin
StatusBar.Panel[0].Text:=Value;
end;
?
PVOzerski (2004-09-16 12:50:00) [5]with StatusBar do
begin
....
Panel[0].Text:='123'.;
....
end;
Не подойдет?
ser (2004-09-16 12:19:00) [6]Цель такая : мне неохота писать каждый раз
StatusBar.Panel[0].Text := '123';
По мне, так лучше писать Panel0.Text := '123'
Но самая главная причина того что я не хочу писать StatusBar.Panel[0].Text та что
в случае смены мест панелей на СтатусБаре, во всех местах прийдется исправлять индексы. А это лишняя работа. Намного легче исправить константы в одном месте.
begin...end (2004-09-16 12:17:00) [7]Если вам кто-то нассал в тапочки, то это не означает, что это была кошка.
P.S. Не знаю, зачем я это сказал.
NAlexey (2004-09-16 12:15:00) [8]>Ega23 © (16.09.04 12:04) [12]
>2. Я кошек ненавижу.
Потомучто они ссут в тапочки?
NAlexey (2004-09-16 12:04:00) [9]>begin...end © (16.09.04 12:01) [9]
О да, так еще гораздо лучше...
Ega23 (2004-09-16 12:04:00) [10]NAlexey © (16.09.04 12:02) [10]
Это не ко мне:
1. Цитата из "12 стульев"
2. Я кошек ненавижу.
NAlexey (2004-09-16 12:02:00) [11]Ega23 © (16.09.04 11:59) [8]
Да ладно, кошки очень непросто родятся.
begin...end (2004-09-16 12:01:00) [12]
> [5] NAlexey © (16.09.04 11:46)
А ещё лучше - так:
const
PanelOne: TStatusPanel = nil;
procedure TForm1.Button1Click(Sender: TObject);
begin
PanelOne := StatusBar1.Panel[0];
PanelOne.Text := 'Я здесь.';
end;
:-)
Ega23 (2004-09-16 11:59:00) [13]"Просто - только кошки родятся!" (С)
NAlexey (2004-09-16 11:53:00) [14]>Ega23 © (16.09.04 11:51) [6]
Да просто...
Ega23 (2004-09-16 11:51:00) [15]NAlexey © (16.09.04 11:40) [4]
NAlexey © (16.09.04 11:46) [5]
А теперь вопрос: А нафига?
NAlexey (2004-09-16 11:46:00) [16]А еще лучше даже так:
const
PanelOne: ^TStatusPanel = nil;
procedure TForm1.Button1Click(Sender: TObject);
var
Panel: TStatusPanel;
begin
Panel := StatusBar1.Panels[0];
PanelOne := @Panel;
PanelOne.Text := 'Я здесь.';
end;
NAlexey (2004-09-16 11:40:00) [17]
const
PanelOne: Pointer = nil;
procedure TForm1.Button1Click(Sender: TObject);
begin
PanelOne := Pointer(StatusBar1.Panels[0]);
TStatusPanel(PanelOne).Text := 'Я здесь.';
end;
PVOzerski (2004-09-16 11:14:00) [18]Не выйдет, потому что константных экземпляров класса не бывает (конструктор-то вызывать надо). Делайте переменные и присваивайте им соответствующие значения на подходящих этапах работы программы.
Рамиль (2004-09-16 11:12:00) [19]Откуда компилятор может знать какие значения указателей будут?...
Ega23 (2004-09-16 11:08:00) [20]Зачем? Да и не получится, ИМХО...