請問如何將資料顯示到TMemo中 |
答題得分者是:Fishman
|
raoli
一般會員 發表:6 回覆:4 積分:2 註冊:2004-12-29 發送簡訊給我 |
|
shinjie
資深會員 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi raoli, Add some code on AfterOpen event for ADOTable/ADOQuery
procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet); var i : integer; begin Memo1.Lines.Clear; Dataset.First; while not Dataset.Eof do begin for i := 0 to Dataset.FieldCount - 1 do begin Memo1.Lines.Add(Dataset.FieldList.Fields[i].FieldName ' = ' Dataset.FieldList.Fields[i].AsString); end; Memo1.Lines.Add(''); Dataset.Next; end; Dataset.First; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
raoli
一般會員 發表:6 回覆:4 積分:2 註冊:2004-12-29 發送簡訊給我 |
兩位大大你們好 已經可以把memo的資料存成文字檔
卡在如何取出資料庫中的table
把它顯示在memo上(給user看的) 小弟學delphi還不到一個禮拜
希望有空的前輩可以幫我看一下卡在那裡 謝謝 unit MemoDemo; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ADODB, DB; type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Edit2: TEdit;
Button2: TButton;
Edit3: TEdit;
Button4: TButton;
Button5: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
Memo1: TMemo;
Button3: TButton;
procedure LoadToMemo(Sender: TObject);
procedure OpenFile(Sender: TObject);
procedure SaveFile(Sender: TObject);
procedure ClearMemo(Sender: TObject);
procedure GetData(Sender: TObject);
procedure After(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.LoadToMemo(Sender: TObject);//載入至Memo按鈕
begin
Memo1.Text:= Memo1.Text + #10 + Edit1.Text + #13;
Edit1.Clear;
end; procedure TForm1.OpenFile(Sender: TObject);//開啓檔案按鈕
var TF:TEXTFILE;
FileHandle:Integer;
STR:String;
begin
OpenDialog1.Execute;
Edit2.Text:=OpenDialog1.FileName; FileHandle:=FileOpen(OpenDialog1.FileName,fmOpenWrite);
FileClose(FileHandle); if FileHandle<0 then
begin
FileHandle:=FileCreate(OpenDialog1.FileName);
FileClose(FileHandle);
ShowMessage('請選擇一個檔案!');
end;
try
AssignFile(TF,OpenDialog1.FileName);
reset(TF); Memo1.Lines.Clear;
while NOT EOF(TF) do
begin
READLN(TF,STR);
Memo1.Lines.Add(STR);
end;
CloseFile(TF); ShowMessage('讀取完成!');
except
ShowMessage('讀取失敗!');
end;
end; procedure TForm1.SaveFile(Sender: TObject);//儲存檔案按鈕
var TF:TextFile;
FileHandle:Integer;
begin SaveDialog1.Execute;
Edit3.Text:=SaveDialog1.FileName;
try
FileHandle:=FileOpen(SaveDialog1.FileName,fmOpenWrite);
FileClose(FileHandle); if FileHandle<0 then
begin
FileHandle:=FileCreate(SaveDialog1.FileName);
FileClose(FileHandle);
end; AssignFile(TF,SaveDialog1.FileName);
rewrite(TF);
WRITELN(TF,Memo1.Lines.Text);
CloseFile(TF); ShowMessage('存檔完成');
except
ShowMessage('存檔失敗');
end; end; procedure TForm1.ClearMemo(Sender: TObject);//清除memo按鈕
begin
Memo1.Lines.Clear;
end; procedure TForm1.GetData(Sender: TObject);//取得資料按鈕
begin
ADOConnection1.Connected:=true;
ADOQuery1.SQL.Add('select * from users');
After(ADOQuery1);
end; //ADOQuery物件的AfterOpen event
procedure TForm1.After(DataSet: TDataSet);
var i:Integer; //fishman大大的範例
begin
Memo1.Lines.Clear;
Dataset.First;
while not Dataset.Eof do
begin
for i := 0 to Dataset.FieldCount - 1 do
begin
Memo1.Lines.Add(Dataset.FieldList.Fields[i].FieldName ' = ' Dataset.FieldList.Fields[i].AsString);
end;
Memo1.Lines.Add('');
Dataset.Next;
end;
Dataset.First; end; end.
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi raoli, 1.修改 GetData 的 OnClick Event 程式碼
2.使用 Memo1.Lines.LoadFromFile 與 Memo1.Lines.SaveToFile 進行讀、存檔到 TextFile
procedure TForm1.GetDataClick(Sender: TObject);//取得資料按鈕 begin //ADOConnection1.Connected:=true; ADOQuery1.Close; ADOQuery1.SQL.Text := 'select * from users'; ADOQuery1.Open; end; procedure TForm1.OpenFileClick(Sender: TObject); begin if OpenDialog1.Execute then begin memo1.Lines.Clear; memo1.Lines.LoadFromFile(OpenDialog1.FileName); end; end; procedure TForm1.SaveFileClick(Sender: TObject); begin if SaveDialog1.Execute then begin if fileexists(SaveDialog1.FileName) then if Application.MessageBox(PChar('檔案 ' SaveDialog1.FileName ' 已存在,是否取代?' ),'確認取代檔案',MB_ICONINFORMATION MB_YESNO MB_DEFBUTTON2) = IDNO then deletefile(SaveDialog1.FileName) else exit; memo1.Lines.LoadFromFile(SaveDialog1.FileName); end; end;發表人 -
------
Fishman |
raoli
一般會員 發表:6 回覆:4 積分:2 註冊:2004-12-29 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi raoli, 1.大概是這樣,格式方面可以自行調整
procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet); var i : integer; str : String; begin Memo1.Lines.Clear; Dataset.First; str := ''; for i := 0 to Dataset.FieldCount - 1 do begin str := str (Dataset.FieldList.Fields[i].FieldName ','); end; Memo1.Lines.Add(str); while not Dataset.Eof do begin str := ''; for i := 0 to Dataset.FieldCount - 1 do begin str := str Dataset.FieldList.Fields[i].AsString ','; end; Memo1.Lines.Add(str); Dataset.Next; end; Dataset.First; end;2.檢查一下 TADOQuery 的 MaxRecords 是否有設定?將其更改為 0 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
raoli
一般會員 發表:6 回覆:4 積分:2 註冊:2004-12-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |