Elérhető soros portok
A számítógépben rendelkező soros portok neveit – mint megannyi mást – természetesen a Rendszerleíró adatbázis megfelelő kulcsa alatt tudjuk lekérdezni. Ennek érdekében kapcsolódnunk kell a Registry-hez, majd ki kell listáznunk az ott megtalálható neveket.
A kulcs, mely a bejegyzéseket tartalmazz a következő:
HKEY_LOCAL_MACHINE\HARDVARE\DEVICEMAP\SERIALCOMM\
A kapcsolódáshoz el kell készíteni egy TRegistry objektumot.
Meg kell adni a gyökérelem nevét, majd meg kell nyitnunk a kulcsot.
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware\devicemap\serialcomm', False);
Majd egy TStringList tömbbe gyűjtjük a neveket.
st := TstringList.Create;
try
reg.GetValueNames(st);
for i := 0 to st.Count - 1 do
Memo1.Lines.Add(reg.Readstring(st.strings[i]));
finally
st.Free;
end;
A művelet végén bezárjuk a kulcsot.
A művelet eredményeképpen a TMemo komponensben megjelennek a soros portok nevei.
Dialógusablak felgördítése
A művelet érdekében megvalósítunk egy kezelőmetódust a WM_NCRBUTTONDOWN üzenet kezelésére. A metódus neve ChangeHeight.
A metódusban meg kell győződnünk arról, hogy a kattintás a Form fejlécén történt. Amennyiben ott kattintottunk az egér jobb gombjával, akkor a dialógusablak kliensterületének magasságát nullára csökkentjük.
if (Msg.HitTest = HTCAPTION) then
...
OldHeight := ClientHeight;
ClientHeight := 0;
Application.ProcessMessages;
Egyébként az elmentett adatból helyreállítjuk az eredeti magasságot.
if (ClientHeight = 0) then begin
ClientHeight := OldHeight;
Application.ProcessMessages;
end
...