Dostepne partycje w combobox

0

znalazlem cos takiego:

function TForm1.ListaPartycji: String;
var litera: Char;
begin
Result:='';
for litera:='A' to 'Z' do
if GetDriveType(PChar(litera+':'))=DRIVE_FIXED
then Result:=Result+litera;
end;

ale niestety nie dziala wie kots moze czemu?

0
{$apptype console}
uses windows;

var maska:dword;
    bit:dword;
    i:char;
    rootdir:array[0..3] of char;

begin
  rootdir:='*:\';
  maska:=GetLogicalDrives;
  bit:=1;
  for i:='A' to 'Z' do
  begin
    rootdir[0]:=i;
    if ((maska and bit)<>0) and (GetDriveType(rootdir)=DRIVE_FIXED) then
      writeln('wykryto dysk ',i);
  end;
end.
0

chodzi mi o to zebym mogl wybrac z combobox'a dana partycje a wszystkie dostepne byly na liscie

0

Brak samodzielności mnie przeraża. Niemniej jednak odpowiadam. Wielu się dziwi, że podaje gotowce, ale ja mam może zbyt duże zaufanie i litość do pytających. Oglądałem kiedyś reportarz na TVP 2 w "Ekspresie Reporterów" i tam było o chłopaku, który był ciężko chory i częściowo sparaliżowany, z trudem pisał jedną reką używając długopisu do stukania w klawisze, leżąc przed klawiaturą i poruszał się na wózku, był pod opieką matki. Ale mimo przeciwności losów studiuje informatykę w Lubinie bodajże, czasami robi strony www na zlecenie.Jego koledzy mówili, że ma dużą wiedzę i częśto się można wiele od Niego nauczyć. A pokazywano jak biedny musiał się męczyć żeby tym stukaniem powoli w klawisze napisać chociaż część programu w C++. Jaki z tego wniosek. Pytającym o takie banalne podstawy powinno być wstyd, że sami nie ruszą tyłka, a o wiele bardziej chorzy ludzi ogarniają informatykę. Z drugiej strony to też dalo mi do myślenia, że nie wiemy nigdy do końca kto jest po drugiej stronie monitora, więć może ta osoba też ma jakieś problemy z samodzielnym funkcjonowaniem, ale z jakiś nie do konca zrozumiałych powodów poszła na uczelnie, gdzie ma do czynienia z programowaniem i komputerami. Także dlatego jak umiem staram się pomóc. Znam też osobę, która poszła na studium policealne na kierunku technik informatyk, ale liczyła na to, że nauczy się czegoś od podstaw. Niestety takie uczelnie nawet nie będące uczelniami wyższymi jak i te prywatne wymagają już jakiejś wiedzy, a resztę trzeba zdobyć samodzielnie i poszerzyc przy na ogoł bardzo niewielkim naprowadzeniu ze strony wykładowców. No to wybaczcie ten wywód, poniżej kod.

var
  C : Char;
  S : string;
begin
  ComboBox1.Style := csOwnerDrawFixed;
  ComboBox1.Clear;
  ComboBox1.Items.BeginUpdate;
  for C := 'A' to 'Z' do
  begin
    S := C + ':\';
    if GetDriveType(PChar(S)) = DRIVE_FIXED then
      ComboBox1.Items.Add(S);
  end;
  ComboBox1.Items.EndUpdate;
end;
0

ladny poemat szkoda tylko ze nie dziala

0

kompiluje dobrze ale nie dodaje do combobox'a

0

Dodaje się u mnie bez problemów. Zależy w jakim miejscu dodajesz ten kod, ja utworzyłem sobie przycisk dla testów i mi po kliknięciu na nim działa jeżeli kod masz w OnClick. Możesz zrezygnowac z ComboBox1.Style := csOwnerDrawFixed; to dodałem ewentualnie żeby nie wpisywać czegoś w ComboBox tylko móc z niego jedynie wybierać. A jeżeli chcesz aby ComboBox wybrał sam pierwszy element po dodaniu jeżeli jesst przynajmniej jeden element czyli przynajmniej jedna partycja znaleziona to po EndUpdate możesz dać:

  if ComboBox1.Items.Count > 0 then
    ComboBox1.ItemIndex := 0;
0
olesio napisał(a)

Możesz zrezygnowac z ComboBox1.Style := csOwnerDrawFixed; to dodałem ewentualnie żeby nie wpisywać czegoś w ComboBox tylko móc z niego jedynie wybierać.

Gwoli wyjaśnienia:
Style=csOwnerDrawFixed/csOwnerDrawVariable stosujemy raczej gdy chcemy aby ComboBox wygenerował zdarzenie OnDrawItem.
A jeżeli nie potrzebne jest pole edycyjnie w ComboBox to wystarczy dać Style=csDropDownList.

0

Działa dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1