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