procedure TReadPaperForm.ScrollScreen;
var
i:integer;
strQuestionID:string;
begin
strQuestionID:=trim(QuestionIDComboBox.Text)+'.';
for i:=0 to QuestionListMemo.Lines.Count do
if pos(strQuestionID,QuestionListMemo.Lines.Strings[i])=1 then
begin
SendMessage(QuestionListMemo.Handle, EM_LINESCROLL, 0,(i-CurrentRow)+1);
ShowMessage(inttostr(i));
CurrentRow:=i;
break;
end;
end;
上面是我的代码,应该怎样改进一下,还有那个SendMessage(Memo1.Handle, EM_LINESCROLL, 0, 0);有什么用它后面的那两个参数都为0,不是没有移动吗?
没有搞定,试一下下面代码:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 0 to 50 do
begin
ComboBox1.Items.Append(IntToStr(i));
Memo1.Lines.Append(IntToStr(i));
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i, j, k: Integer;
begin
k := 0;
j := Memo1.Lines.IndexOf(ComboBox1.Text);
for i := 0 to j do
k := k + Length(Memo1.Lines[i-1]);
k := k + 2*j;
Memo1.SelStart := k;
Memo1.SelLength := Length(Memo1.Lines[j]);
SendMessage(Memo1.Handle, EM_LINESCROLL, 0, 0);
Memo1.SetFocus;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var inti:integer;
var s:string;
begin
// Memo1.Lines[0].text
for inti:=0 to Memo1.Lines.Count-1 do
begin
if trim(ComboBox1.Text)=trim(Memo1.Lines[inti]) then
begin
s:= trim(Memo1.Lines[0]);
Memo1.Lines[0]:= trim(ComboBox1.Text);
Memo1.Lines[inti]:= s;
end;