delphi4arab منتديات دلفي للعرب
استحضار جميع المكونات إلى 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 جميلة جدا

شكرا لك مرة ثانية على الفكرة