المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
من يدلنا على طريقة لتخزين معيطات بشكل منسق (كل عنوان يقابله نوع معين من المعطيات: نص، قيمة، صورة، ....)، أظن أن ذلك ممكن باستعمال ListBox1.AddItem لأنها تخزن قيمة نصية و متغير من النوع TObject، لكنني لم أتوصل الى الطريقة الصحيحة.
بالنسبة للنص Edit1.text بالأمر سهل:
كود :
ListBox1.AddItem(Edit1.Text, { ...Memo1... });
ولقراءته:
كود :
Edit1.Text := ListBox1.Items.Strings[ListBox1.ItemIndex];
Memo1 := ListBox1.Items.Objects...;
أما بالنبسة الآخر فلم أجد حل في Google فهل أجد شيئا Delphi4Arab؟
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
إقتباس :فلم أجد حل في Google فهل أجد شيئا Delphi4Arab؟
ان شاء الله تجد
محتوى المكون ListBox1 نصي String فقط
ان اردت تخزين شيئ اخر غير نصي استعمل ListView
هناك مثال حي ضمن امثلة دلفي
كود :
\Program Files\Borland\Delphi*\Demos\Virtual Listview
والسلام عليكم
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
بارك الله فيك أخونا عبد العزيز على التوجيه وجزاك الله خيرا.
المثال الذي أعطيتني لم يكن بالضبط ما كنت أبحث عنه.
وقد وجدته الآن.
المكون 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 أيضا.
شكرا كثيرا على التوجيه.