13-10-2009, 10:34 AM
بارك الله في أخي o15s19 على الرد
في الحقيقة ليس ذاك الذي أقصد، TStrings أو TStringList لا يهم...
الذي أبحث عنه هو طريقة لجلب قائمة بأسماء جميع المكونات إلى TComboBox أو TListBox أو ... (أعني أي TStrings).
الأكواد التي طرحتها تستختدم في صناعة Packages يعني من داخل IDE للدلفي.
وجدت طريقة (باستخدام Registry) لا أظنها الأفضل لكنها تفي بالغرض:
شكرا كثيرا أخي على الرد.
في الحقيقة ليس ذاك الذي أقصد، TStrings أو TStringList لا يهم...
الذي أبحث عنه هو طريقة لجلب قائمة بأسماء جميع المكونات إلى TComboBox أو TListBox أو ... (أعني أي TStrings).
الأكواد التي طرحتها تستختدم في صناعة Packages يعني من داخل IDE للدلفي.
وجدت طريقة (باستخدام Registry) لا أظنها الأفضل لكنها تفي بالغرض:
كود :
procedure GetComponentNames(lst: TStrings);
var
i, j, iPos: Integer;
Reg: TRegistry;
sComponent: String;
slValues, slData: TStrings;
begin
Reg := TRegistry.Create;
slValues := TStringList.Create;
slData := TStringList.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\Borland\Delphi\6.0\Palette', False); // Change reg key where appropriate
Reg.GetValueNames(slValues);
for i := 0 to Pred(slValues.Count) do
begin
lst.Append(slValues[i]);
lst.Append('----------');
slData.Delimiter := ';';
slData.DelimitedText := Reg.ReadString(slValues[i]);
for j := 0 to Pred(slData.Count) do
begin
sComponent := slData[j];
iPos := Pos('.', sComponent);
if (iPos > 0) then
Delete(sComponent, 1, iPos);
lst.Append(sComponent);
end;
end;
finally
slData.Free;
slValues.Free;
Reg.Free;
end; {try..finally}
end;
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...

