كيف تستعمل ListBox1.AddItem لتخزين نص وعنوانه
#1
من يدلنا على طريقة لتخزين معيطات بشكل منسق (كل عنوان يقابله نوع معين من المعطيات: نص، قيمة، صورة، ....)، أظن أن ذلك ممكن باستعمال ListBox1.AddItem لأنها تخزن قيمة نصية و متغير من النوع TObject، لكنني لم أتوصل الى الطريقة الصحيحة.
بالنسبة للنص Edit1.text بالأمر سهل:
كود :
ListBox1.AddItem(Edit1.Text, { ...Memo1... });
ولقراءته:
كود :
Edit1.Text := ListBox1.Items.Strings[ListBox1.ItemIndex]; Memo1 := ListBox1.Items.Objects...;
أما بالنبسة الآخر فلم أجد حل في Google فهل أجد شيئا Delphi4Arab؟
الرد
#2

إقتباس :فلم أجد حل في Google فهل أجد شيئا Delphi4Arab؟
ان شاء الله تجد

محتوى المكون ListBox1 نصي String فقط
ان اردت تخزين شيئ اخر غير نصي استعمل ListView
هناك مثال حي ضمن امثلة دلفي
كود :
\Program Files\Borland\Delphi*\Demos\Virtual Listview
والسلام عليكم
الرد
#3
بارك الله فيك أخونا عبد العزيز على التوجيه وجزاك الله خيرا.
المثال الذي أعطيتني لم يكن بالضبط ما كنت أبحث عنه.
وقد وجدته الآن.
المكون TListBox يمكنه تخزين قيمة نصية (String) تقابلها قيمة من النوع TObject.
حتى الآن استعملتها مع نص String وقائمة من النصوص TStringList كنوع TObject.
واستعملتها مع نص ومؤشر على تسجيل Pointer of record، وهذا الأهم.
وإليكم كود الطريقتين:
الأولى:
PHP كود :
var
  
Form1: TForm1;
  
NotesFile: TStringList;
implementation
{$R *.dfm}
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  Memo1
.Lines := TStrings(ListBox1.Items.Objects[ListBox1.ItemIndex]);
  
Edit1.Text := ListBox1.Items[ListBox1.ItemIndex];
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  NotesFile
.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  NotesFile 
:= TStringList.Create;
  
NotesFile.Text := Memo1.Text;
  
ListBox1.Items.AddObject(Edit1.Text, NotesFile);
end; 
الثانية:

PHP كود :
PMyRec = ^TMyRec;
TMyRec = record
  EdTitre
: String;
  
MemTexte: String;
end;
var
  
Form1: TForm1;
  
EcriRec: PMyRec;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  
New(EcriRec);
  
EcriRec.EdTitre := Edit1.Text;
  
EcriRec.MemTexte := Memo1.Text;
  
ListBox1.AddItem(Edit1.Text, pointer(EcriRec));
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var 
LirRec: TMyRec;
begin
  LirRec 
:= pMyRec(ListBox1.Items.Objects[ListBox1.itemindex])^;
  
Edit1.Text := LirRec.EdTitre;
  
Memo1.Text := LirRec.MemTexte;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  
if EcriRec <> nil then
  Dispose
(EcriRec);
end; 
وفي ملف المسا عدة (Help) للدلفي مثال عن استعمالها مع TControl أيضا.
شكرا كثيرا على التوجيه.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم