Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2004-09-28

Re[2]: float to AnsiString

Здравствуйте, Feniks.

F> Ищи в Хелпе:

F> FormatFloat
F> FloatToStr

F> А для более корректного округления, надо в начале модуля вставить
F> строку:
F> #define FormatFloat(x,y) FormatFloat(x,(y) + FLT_EPSILON)
F> Ну и для остальных. Т.е. переопределить и добавлять машинный эпсилон
F> FLT_EPSILON.

Спасибо, Заработало.

   2004-09-28 21:43:55 (#236178)

Re[2]: Как разместить CProgressCtrl

Hello Victor,

Monday, September 27, 2004, 11:58:46 PM, you wrote:

VVV> class CMainFrame : public CFrameWnd
VVV> {
VVV> ...
VVV> CProgressCtrl m_wndProgress;
VVV> ...
VVV> };

VVV> Потом в CMainFrame::OnCreate после создания статус бара (там где
VVV> написано
VVV> if(!m_wndStatusBar.Create(... ) создавай также прогресс
VVV> (указывая ему
VVV> в качестве родителя m_wndStatusBar.

Я действовал приблизитеьно так же
Т.е. следующая команда это получение ссылки на окно m_wndStatusBar
CWnd* wnd=m_wndStatusBar.GetWindow(GW_HWNDFIRST);
Далее создаю ProgressCtrl- переменная предварительно объявлена в файле
заголовка
m_wndProgress.Create(WS_VISIBLE|WS_CHILD|WS_BORDER,CRect(0,0,10,10),wnd,121212);
но здесь возникает сразу несколько вопросов
1.В каком из индикаторов статус бара все это будет отображаться
2.Какой СRect дожен быть объявлен.
3.Возможно нужен другой стиль прогресса

По крайне мере после этих команд ничего на статус баре я не вижу

Большаков

Best regards,
bvb mailto:b***@a*****.ru

Номер выпуска : 3609
Возраст листа : 372 (дней)
Количество подписчиков : 474
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/236116
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

   bvb 2004-09-28 19:27:04 (#236116)

Re: Получить иконки [2]

Здравствуйте, Денис.

Вы писали 27 сентября 2004 г., 22:59:09:

Д> Доброго времени суток, все!

Д> Функция ShGetFileInfo безотказно получает иконки файлов. Но она делает
Д> это ОЧЕНЬ медленно (к примеру, для отображения файлов
Д> windows\system32\ требуется неколько минут). Может быть, есть какая-то
Д> другая фукция?

Сначала нужно получить дикриптор списка иконок. Потом в этом списке
искать соответствие иконок типам файлов.

uses
ShellAPI;

procedure UpdateFiles;
var
sr: TSearchRec;
li: TListItem;
fi: TSHFileInfo;
ext: string;
IconIndex: word;
ic: TIcon;
begin
Form1.ListView1.Items.BeginUpdate;
Form1.ListView1.Items.Clear;
if FindFirst(Form1.DirectoryListBox1.Directory + '\*.*', faAnyFile, sr) = 0
then
repeat
if sr.Attr and faDirectory <> 0 then
continue;
li := Form1.ListView1.Items.Add;
li.Caption := sr.name;
ext := LowerCase(ExtractFileExt(li.Caption));
ShGetFileInfo(PChar('*' + ext), 0, fi, SizeOf(fi),
SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME);
li.ImageIndex := fi.iIcon;
if sr.Size < 1024 then
li.SubItems.Add(IntToStr(sr.Size) + ' byte')
else
if sr.Size < 1024 * 1024 then
li.SubItems.Add(IntToStr(round(sr.Size / 1024)) + ' KByte')
else
li.SubItems.Add(IntToStr(round(sr.Size / (1024 * 1024))) + ' MByte');
li.SubItems.Add(fi.szTypeName);
until
FindNext(sr) <> 0;
FindClose(sr);
Form1.ListView1.Items.EndUpdate;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
fi: TSHFileInfo;
lc: TListColumn;
begin
DriveComboBox1.DirList := DirectoryListBox1;
with ListView1 do
begin
SmallImages := TImageList.CreateSize(16,16);
SmallImages.Handle := ShGetFileInfo('*.*', 0, fi,
SizeOf(fi), SHGFI_SMALLICON or SHGFI_ICON
or SHGFI_SYSICONINDEX);
LargeImages := TImageList.Create(nil);
LargeImages.Handle := ShGetFileInfo('*.*', 0, fi,
SizeOf(fi), SHGFI_LARGEICON or SHGFI_ICON
or SHGFI_SYSICONINDEX);
lc := Columns.Add;
lc.Caption := 'Name';
lc := Columns.Add;
lc.Caption := 'Size';
ComboBox1.Items.Add('Icons');
ComboBox1.Items.Add('List');
ComboBox1.Items.Add('Table');
ComboBox1.Items.Add('SmallIcons');
ComboBox1.ItemIndex := 0;
end;
UpdateFiles;
end;

procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
UpdateFiles;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: ListView1.ViewStyle := vsIcon;
1: ListView1.ViewStyle := vsList;
2: ListView1.ViewStyle := vsReport;
else
ListView1.ViewStyle := vsSmallIcon;
end;
end;

   2004-09-28 09:02:18 (#235841)