在Tmemo中,我想使当前选中的行自动滚到屏幕的最顶端,我用SendMessage来使滚动条上下移也不行,这个函数对于刚好是一屏也没有用(就是滚动条没有发生作用时),大家帮帮我应该怎么办,我做的是一个考试系统,当用户从cmoboBox中选中一个题号时自动把memo中当前题自动移到屏幕的最顶端,怎样才好实现这一功能?
解决方案 »
- InterBase 的数据库,创建视图出错
- 超难问题!!!! 求 车牌 识别 程序!!!!
- 如何将数据添加到表, access ado
- 如果在DELPHI中调试COM组件?
- 请问如何能让ListView的一列变成不可见?
- forgot2000(忘记2000年)进来拿份。
- 在QuickRep中, 如何让一个QRDBText自动换行阿?
- 怎样将Web页面存为文件(我只有30分)
- 200分征全套DevExpress for Delphi控件。请告诉我下载地址。
- 我这个得到文件字节数的代码,老报IO/103错误
- 执行UPDATE 操作后怎么得到更新了几条记录信息,很简单的问题!解决后立刻结帐
- delphi6开发中怎样能看到中间层的实体BEAN
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
self.Memo1.Lines.Clear;
self.Memo1.Lines.Add('aaaaaaa');
self.Memo1.Lines.Add('bbbbbb');
self.Memo1.Lines.Add('cccc');
self.Memo1.Lines.Add('eeeeee'); self.ComboBox1.Items.Add('aaaaaaa');
self.ComboBox1.Items.Add('bbbbbb');
self.ComboBox1.Items.Add('cccc');
self.ComboBox1.Items.Add('eeeeee');
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;
end;
end;end.
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;
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,不是没有移动吗?
2. 二进制11010110转换成十六制是_____.
3. 只有硬件而没有软件的计算机被称为_______.
4. 一个盘符最多有____个根目录.Memo中题目显示是这样的,如果用户在ComboBox中选择一个题号后,程序就在MEMO中自动搜索这个标题然后再停在这一行上面,具体的应该怎么办?