![]() |
|
استحضار جميع المكونات إلى TStrings - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : استحضار جميع المكونات إلى TStrings (/showthread.php?tid=1260) |
استحضار جميع المكونات إلى TStrings - kachwahed - 11-10-2009 السلام عليكم ورحمة الله هل من طريقة لاستحضار جميع المكونات إلى TStrings؟ هذه الطرق لا تنفع إلا في Packages كود : uses TypInfo, ToolIntf, Exptintf;
procedure GetComponentNames(lst: TStrings);
var
i, k: Integer;
CRef: TClass;
strName: ShortString;
begin
lst.Clear;
for i := 0 to ToolServices.GetModuleCount-1 do
begin
for k := 0 to ToolServices.GetComponentCount(i)-1 do
begin
CRef := TClass(GetClass(ToolServices.GetComponentName(i, k)));
while CRef <> nil do
begin
strName := CRef.ClassName;
if lst.IndexOf(strName) = -1 then
lst.Add(strName);
if str <> 'TComponent' then
CRef := CRef.ClassParent
else
CRef := nil;
end;
end;
end;
end;كود : uses ToolsApi;
{....}
var
a, i: Integer;
begin
with (BorlandIDEServices as IOTAPackageServices) do
begin
for a := 0 to GetPackageCount - 1 do
begin
for i := 0 to GetComponentCount(a) - 1 do
begin
{get each component name with GetComponentName(a, i);}
end;
end;
end;
end;استحضار جميع المكونات إلى TStrings - o15s19 - 13-10-2009 لم افهم السؤال جيدا و لكن أعرف التالي أولا انا بالعادة استخدم TStringList للتعامل مع ال Strings و عن طريقها يمكنك فعل كل شئ في السترنغات و حتي يمكنك الاستفادة من مزايا Names و ال value عندما يكون هناك ترابط بين جدولين مثلا اسم الجهاز و الأي بي و للاستفادة منها نقوم مثلا كود : ipList := TStringList.Create ;أما لامر أكثر توسعا فأنا استخدم TList و هو يقوم بحفظ Objects و يقوم تقريبا بنفس عمل TStringList و لكن مع الاوبجيكتس استحضار جميع المكونات إلى TStrings - kachwahed - 13-10-2009 بارك الله في أخي o15s19 على الرد في الحقيقة ليس ذاك الذي أقصد، 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;استحضار جميع المكونات إلى TStrings - o15s19 - 13-10-2009 على ما اظن أني فهمت الفكرة, أنت تريد احضار اسماء المكونات الخاصة بالدلفي و وضعها في قائمة معينة. شكرا لك أخي الكريم............... طبعا فكرة Delimiter جميلة جدا شكرا لك مرة ثانية على الفكرة |