일단 제가 작성한 코드부터 올리겠습니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, ComCtrls;
type
TForm1 = class(TForm)
Label2: TLabel;
Edit1: TEdit;
MaskEdit1: TMaskEdit;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
FindDialog1: TFindDialog;
Button3: TButton;
RichEdit1: TRichEdit;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FindDialog1Find(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s1, s2:string;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
s :string;
begin
s1:=edit1.text;
s2:=maskedit1.text;
s:=s1+' '+s2;
memo1.lines.add(s);
edit1.text:='';
maskedit1.text:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
finddialog1.execute;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
i,j,posreturn,skipchars:integer;
begin
for i:=0 to memo1.lines.count do
begin
posreturn:=pos(finddialog1.findtext,memo1.lines[i]);
if posreturn <> 0 then
begin
skipchars:=0;
for j:=0 to i-1 do
skipchars := skipchars + length(memo1.lines[j]);
skipchars:=skipchars+(i*2);
skipchars:=skipchars+posreturn-1;
memo1.setfocus;
memo1.selstart:=skipchars;
memo1.sellength:=length(finddialog1.findtext);
end
else
showmessage('다시 입력해임마!');
break;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
with richedit1 do begin
lines.clear;
paragraph.numbering:=nsbullet;
paragraph.firstindent:=5;
lines.add(s1);
paragraph.numbering:=nsnone;
paragraph.firstindent:=25;
lines.add('전화: '+ s2);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
combobox1.Items:=screen.fonts;
end;
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
richedit1.font.name:=combobox1.items[combobox1.itemindex];
richedit1.font.size:=12;
end;
end.
뭐 제대로 작성된 것은 아니지만....
잘 보시면 일단 에디트박스 두개에 자기의 이름과 전화번호등을 입력을 하면
메모박스에 기억이 됩니다. 기억이 되는것까지는 좋은데 이 메모박스에 여러개의
데이타가 기억이 되었을 경우 (savedialog를 사용....)이 메모박스에 있는
데이타중 필요한 항목만 선택을 해서 다른 곳에 있는 박스에 이동을 하게끔
만들고자 합니다. 사실은 레포트로 나왔습니다.
어떤 형은 배열을 이용하라고 하고.... 어떤형은 포인터를 찾아라고하고....
다들 무슨 말인지를 모르겠습니다.
프로그램을 실행을 시켰을 때 메모박스는 라인선택이 안되는것 같은데
정확히 메모박스에 저장된 라인을 선택해서 이동시키는 방법을 좀 가르쳐 주시면
그 은혜는 쉬 잊지 않겠습니다.
그럼 꼭 좀 부탁드립니다.
컴포넌트 선택을 잘못하신것 같네요. 메모(TMemo)의 주기능은 편집기인데요. 리스트박스
가(TListBox) 더 효율적인것 같네요. 메모에는 여러개의 특정한 행들을 선택하는
기능이 없습니다. 그렇다고 못할것은 없지만 비효율적이죠.
아래와 같이 하시면 원하는 행을 다른 메모(TMemo)로 옮기실 수 있습니다.
// Memo1에서 Memo2로 한행을 옮긴다.
Memo2.Lines.Add(Memo1.Lines[옮기기원하는행]);
Memo1.Lines.Delete(옮기기원하는행);
^^ 항상 즐코하세요.
주기표 wrote:
> 일단 제가 작성한 코드부터 올리겠습니다.
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls, Mask, ComCtrls;
>
> type
> TForm1 = class(TForm)
> Label2: TLabel;
> Edit1: TEdit;
> MaskEdit1: TMaskEdit;
> Button1: TButton;
> Memo1: TMemo;
> Button2: TButton;
> FindDialog1: TFindDialog;
> Button3: TButton;
> RichEdit1: TRichEdit;
> ComboBox1: TComboBox;
> procedure Button1Click(Sender: TObject);
> procedure Button2Click(Sender: TObject);
> procedure FindDialog1Find(Sender: TObject);
> procedure Button3Click(Sender: TObject);
> procedure FormCreate(Sender: TObject);
> procedure ComboBox1Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
> s1, s2:string;
> implementation
>
> {$R *.DFM}
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> s :string;
> begin
> s1:=edit1.text;
> s2:=maskedit1.text;
> s:=s1+' '+s2;
> memo1.lines.add(s);
> edit1.text:='';
> maskedit1.text:='';
> end;
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
> finddialog1.execute;
> end;
>
> procedure TForm1.FindDialog1Find(Sender: TObject);
> var
> i,j,posreturn,skipchars:integer;
> begin
> for i:=0 to memo1.lines.count do
> begin
> posreturn:=pos(finddialog1.findtext,memo1.lines[i]);
> if posreturn <> 0 then
> begin
> skipchars:=0;
> for j:=0 to i-1 do
> skipchars := skipchars + length(memo1.lines[j]);
> skipchars:=skipchars+(i*2);
> skipchars:=skipchars+posreturn-1;
>
> memo1.setfocus;
> memo1.selstart:=skipchars;
> memo1.sellength:=length(finddialog1.findtext);
> end
> else
> showmessage('다시 입력해임마!');
> break;
> end;
> end;
> procedure TForm1.Button3Click(Sender: TObject);
> begin
> with richedit1 do begin
> lines.clear;
> paragraph.numbering:=nsbullet;
> paragraph.firstindent:=5;
> lines.add(s1);
> paragraph.numbering:=nsnone;
> paragraph.firstindent:=25;
> lines.add('전화: '+ s2);
> end;
> end;
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> combobox1.Items:=screen.fonts;
> end;
>
> procedure TForm1.ComboBox1Click(Sender: TObject);
> begin
> richedit1.font.name:=combobox1.items[combobox1.itemindex];
> richedit1.font.size:=12;
> end;
>
> end.
>
> 뭐 제대로 작성된 것은 아니지만....
> 잘 보시면 일단 에디트박스 두개에 자기의 이름과 전화번호등을 입력을 하면
> 메모박스에 기억이 됩니다. 기억이 되는것까지는 좋은데 이 메모박스에 여러개의
> 데이타가 기억이 되었을 경우 (savedialog를 사용....)이 메모박스에 있는
> 데이타중 필요한 항목만 선택을 해서 다른 곳에 있는 박스에 이동을 하게끔
> 만들고자 합니다. 사실은 레포트로 나왔습니다.
> 어떤 형은 배열을 이용하라고 하고.... 어떤형은 포인터를 찾아라고하고....
> 다들 무슨 말인지를 모르겠습니다.
> 프로그램을 실행을 시켰을 때 메모박스는 라인선택이 안되는것 같은데
> 정확히 메모박스에 저장된 라인을 선택해서 이동시키는 방법을 좀 가르쳐 주시면
> 그 은혜는 쉬 잊지 않겠습니다.
> 그럼 꼭 좀 부탁드립니다.
>