![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диски [D6, D7, WinXP]
Ivolg © (2004-10-28 13:14:00)Как мона проверить сколько у тебя на компе дисков(А,С,D,E....и т.д) и добавить список имеющихся тдисков в ComboBox СПАСИБО!!!
begin...end (2004-10-29 20:35:00) [1]
> [10] begin...end © (28.10.04 13:37)
> for I := 0 to 26 do
for I := 0 to 25 do
Настолько я отупел уже, что забыл, сколько букв в латинском алфавите. :о(
GuAV (2004-10-29 20:17:00) [2]GanibalLector © (29.10.04 19:09) [16]
Дык,расскажи как.
Ну вот так например
with CreateMessageDialog(st, MtInformation, [MbOk]) do
try
(FindComponent('Message') as TLabel).Font.Name:='MS Serif';
ShowModal;
finally
Free;
end;
Тогда можно будет подобрать количество tab'ов, т.к. шрифт заранее известен. А шрифт по умолчанию зависит от настроек пользователя.
Хотя вообще то это тоже не хорошо, т.к. размер диалога и положение кнопки зависят от старого шрифта.
Короче имхо следует или не пытаться расположить тескт сообщения таблицей или использовать listview, или рисовать текст самому, но не пытаться манипулировать с lableом.
GanibalLector (2004-10-29 19:09:00) [3]> Возможно нужно было поставить моноширинный шрифт.
Дык,расскажи как.
GuAV (2004-10-29 14:33:00) [4]GanibalLector © (29.10.04 2:51) [14]
Не понял...это о чем.Как надо?
Я сразу не заметил что это код для приложения с формой, поэтому заподозрил, что не используешь StringList, т.к. не подключешь Classes, для экономии. Сейчас не понимаю почему бы им не воспользоваться. И кстати с Tab'ами не угадал. Возможно нужно было поставить моноширинный шрифт.
GanibalLector (2004-10-29 02:51:00) [5]>Оригинально!
Ну так ;)
>Тоже хакер ?
уже нет
>Я бы ещё понял что экономишь размер ехе и не подключаешь ничего если бы не это.
Не понял...это о чем.Как надо?
GuAV (2004-10-29 02:27:00) [6]GanibalLector © (28.10.04 23:39) [12]
DriveConst: array[1..26] of DWord =
($1, $2, $4, $8,
$10, $20, $40, $80,
$100, $200, $400, $800,
$1000, $2000, $4000, $8000,
$10000, $20000, $40000, $80000,
$100000, $200000, $400000, $800000,
$1000000, $2000000);
Оригинально!
GanibalLector © (28.10.04 23:39) [12]
+#10#13;
Тоже хакер ?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1098466615&n=0
вообще почему бы не воспользоваться TStringList ?
Я бы ещё понял что экономишь размер ехе и не подключаешь ничего если бы не это.
> messagedlg(Pchar(st),MtInformation,[MbOk],0);
GanibalLector (2004-10-28 23:39:00) [7]
const
DriveConst: array[1..26] of DWord =
($1, $2, $4, $8,
$10, $20, $40, $80,
$100, $200, $400, $800,
$1000, $2000, $4000, $8000,
$10000, $20000, $40000, $80000,
$100000, $200000, $400000, $800000,
$1000000, $2000000);
procedure TForm1.FormCreate(Sender: TObject);
var QQ,i:DWord;
begin
QQ:=GetLogicalDrives();
for i:=1 to 26 do
if (QQ and DriveConst[i])>0 then
Combobox1.Items.Add(chr($40+i)+':\');
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var st:string;
VolumeName,FileSystemName : array [0..MAX_PATH-1] of Char;
VolumeSerialNumber,MaximumComponentLength,FileSystemFlags:DWord;
SectorsPerCluster,BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters:DWord;
begin
SetErrorMode(SEM_FAILCRITICALERRORS);
case GetDriveType(PChar(Combobox1.Text)) of
0: st:='Type :'+chr(09)+chr(09)+chr(09)+'Unknown'+#10#13;
1: st:='Type :'+chr(09)+chr(09)+chr(09)+'No_ROOT_DIR'+#10#13; // if RootPathName=nil
DRIVE_REMOVABLE: st:='Type :'+chr(09)+chr(09)+chr(09)+'Flopy'+#10#13;
DRIVE_FIXED: st:='Type :'+chr(09)+chr(09)+chr(09)+'Hard'+#10#13;
DRIVE_REMOTE: st:='Type :'+chr(09)+chr(09)+chr(09)+'Remote'+#10#13;
DRIVE_CDROM : st:='Type :'+chr(09)+chr(09)+chr(09)+'CD-ROM'+#10#13;
DRIVE_RAMDISK: st:='Type :'+chr(09)+chr(09)+chr(09)+'RAM-Disk'+#10#13;end;
st:=st+#10#13;
if GetVolumeInformation(Pchar(Combobox1.Text),VolumeName,MAX_PATH,
@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,FileSystemName,MAX_PATH)=true then
begin
st:=st+'Name :' +chr(09)+chr(09)+chr(09)+VolumeName+#10#13;
st:=st+'Serial :' +chr(09)+chr(09)+chr(09)+inttohex(VolumeSerialNumber,8)+#10#13;
st:=st+'Length :' +chr(09)+chr(09) +inttostr(MaximumComponentLength)+#10#13;
st:=st+'File system :'+chr(09)+chr(09) +FileSystemName+#10#13;
end
else st:=st+'Drive not ready'+#10#13; //ShowMessage(SysErrorMessage(GetLastError));
st:=st+#10#13;
if GetDiskFreeSpace(Pchar(Combobox1.Text),SectorsPerCluster,
BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters)=true then
begin
st:=st+'SectorsPerCluster :'+chr(09)+inttostr(SectorsPerCluster)+#10#13;
st:=st+'BytesPerSector : '+chr(09)+inttostr(BytesPerSector)+#10#13;
st:=st+#10#13;
st:=st+'FreeClusters : '+chr(09)+chr(09)+inttostr(NumberOfFreeClusters)+#10#13;
st:=st+'BusyClusters :'+chr(09)+chr(09)+inttostr(TotalNumberOfClusters-NumberOfFreeClusters)+#10#13;
st:=st+'TotalClusters :'+chr(09)+chr(09)+inttostr(TotalNumberOfClusters)+#10#13;
st:=st+#10#13;
st:=st+'FreeBytes :'+chr(09)+chr(09)+inttostr(NumberOfFreeClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
st:=st+'Busy :'+chr(09)+chr(09)+chr(09)+inttostr(TotalNumberOfClusters*(Int64(BytesPerSector*SectorsPerCluster))-
NumberOfFreeClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
st:=st+'TotalBytes :'+chr(09)+chr(09)+inttostr(TotalNumberOfClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
end;
messagedlg(Pchar(st),MtInformation,[MbOk],0);
end;
Ivolg (2004-10-28 13:48:00) [8]Спасибо!!
begin...end (2004-10-28 13:37:00) [9]Вот, только что написал. Извращайся на здоровье...
var
I: Byte;
Res: Cardinal;
begin
Res := GetLogicalDrives;
for I := 0 to 26 do
if (Res shr I) and 1 = 1 then
ComboBoxName.Items.Append(Chr(I + 65))
end.
:-)
Ivolg (2004-10-28 13:34:00) [10]begin...end
Если не в падло, напиши пожайлуста пример?!
Ivolg (2004-10-28 13:29:00) [11]begin...end
Уж больно не красивы компонет! Я делаю с ComboBoxEx
begin...end (2004-10-28 13:20:00) [12]
> [1] Ivolg (28.10.04 13:15)
> [2] Ivolg (28.10.04 13:16)
> [3] Ivolg (28.10.04 13:16)
> [4] Ivolg (28.10.04 13:17)
Ну ты загрузил... Чего ж тебе нужно-то?
-=SS=- (2004-10-28 13:20:00) [13]А использовать TShellComboBox на вкладке Samples и с параметром
Root := rfMyComputer взападло ?
begin...end (2004-10-28 13:18:00) [14]Не проще ли использовать TDriveComboBox ?
Если не проще, то см. API-функции GetLogicalDrives и GetLogicalDriveStrings.
Или - перебор с помощью GetDriveType.
Ivolg (2004-10-28 13:17:00) [15]Или лутше проверить на каком диске находится Система!!
Ivolg (2004-10-28 13:16:00) [16]Или лутше проверить на каком диске находится Система и добавить!!
Ivolg (2004-10-28 13:16:00) [17]Или лутше проверить где находится папка главная Windows и добавить путь в переменную Path!!
Ivolg (2004-10-28 13:15:00) [18]Или лутше проверить где находится папка главная Windows и добавить пусть в переменную Path!!