![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Как вывести в компонент TLabel имя и размер выделенного файла в компоненте TFilterComboBox?
По заданию необходимо создать обработчик события onChange для FileListBox. Для получения имени выделенного файла использовать свойства Items и ItemIndex (номер выделенного файла) компонента FileListBox. Последний раз редактировалось Doctor_Che, 25.01.2011 в 07:55. |
|
#2
|
||||
|
||||
|
Где то так:
Код:
procedure TForm14.FileListBox1Change(Sender: TObject);
begin
if FileListBox1.ItemIndex = -1 then Exit;
Label1.Caption := FileListBox1.Items[FileListBox1.ItemIndex];
try
with TFileStream.Create(Label1.Caption, fmOpenRead)
do begin
Panel1.Caption := IntToStr(Size);
Free;
end;
except
Panel1.Caption := 'Locked';
end;
end; |
|
#3
|
|||
|
|||
|
Спасибо огромное! Помогло!
|
|
#4
|
|||
|
|||
|
А как эти же данные поместить в StatusBar?
И туда же поместить текущее время. При условии что: Размер первых двух панелей зависит от значения свойства Directory компонента DirectoryListBox1. Размер третьей панели, отображающей текущее время, не меняется. |
|
#5
|
||||
|
||||
|
А практически так-же.
Код:
StatusBar1.Panels[0].Text := 'что тут'; StatusBar1.Panels[1].Text := 'и что тут'; |
|
#6
|
|||
|
|||
|
Ага. Получилось вставить данные в StatusBar.
Правда таймер кудато пропал... Но не получается сделать так, что бы размер первых двух панелей зависил от значения свойства Directory компонента DirectoryListBox1. А размер третьей панели, отображающей текущее время, не менялся. |
|
#7
|
||||
|
||||
|
А вот резиновости стандартный StatusBar не имеет, придется делать расчет границ производить самому, примерно так:
Код:
for i := 0 to StatusBa1.Panels.Count - 1 do StatusBa1.Panels[i].Width := Canvas.TextWidth(StatusBa1.Panels[i].Text) + 8; |
|
#8
|
|||
|
|||
|
Сделал вот так:
Код:
StatusBar1.Panels[0].Width := Canvas.TextWidth(StatusBar1.Panels[0].Text) + 8; StatusBar1.Panels[1].Width := StatusBar1.Width - StatusBar1.Panels[0].Width - 90; StatusBar1.Panels[2].Width := 90; И вообще ведет себя странно... |
|
#9
|
||||
|
||||
|
Код:
uses
FileCtrl,
...
begin
StatusBar1.Panels[0].Width:=200;
StatusBar1.Panels[0].Text:=MinimizeName('c:\Program Files\Справочник школьника. Электронное приложение 1-4\AccessDB\SchoolTest.mdb', StatusBar1.Canvas, StatusBar1.Panels[0].Width);
end;c:\...\AccessDB\SchoolTest.mdb |
|
#10
|
|||
|
|||
|
О! Возьму на заметку.
Но тут есть одно "но": Цитата:
|
|
#11
|
|||
|
|||
|
Еще один вопрос по FileListBox.
Как из него вывести в TImage графическое изображение только в том случае, если в FileListBox выбран BMP-файл. Пытаюсь вот так Код:
Image1.Picture.LoadFromFile(FileListBox1.Items[FileListBox1.ItemIndex]); |
|
#12
|
|||
|
|||
|
Код:
if LowerCase(ExtractFileExt(FileListBox1.FileName)) = '.bmp'
then begin
Image1.Picture.LoadFromFile(FileListBox1.FileName); //ðèñóåì èçîáðàæåíèå, ïóòü áåðåòñÿ èç FileListBox
end
else begin
Image1.Picture:= nil;
end; |