procedure TForm1.DooDah;
var
Count: Integer;
begin
Count := 0;
while (Count < ComponentCount) and (Components[Count] <> 'Button1') do Inc(Count);
TButton(Components[Count]).SetFocus;
end;
или еще проще:
procedure TForm1.DooDah;
var
Target: TComponent;
begin
Target := FindComponent('Button1');
TButton(Target).SetFocus;
end;
Оба этих примера показывают как найти компонент
12. Как получить горизонтальный ScrollBar на ListBox?
Пошлите сообщение
procedure TForm1.FormCreate(Sender: TObject);
begin
SendMessage(Listbox1.Handle, LB_SETHORIZONTALEXTENT, 1000, Longint(0));
end;
13. Как определить текущую колонку и строку каретки в компоненте TMemo?
Вы можете использовать сообщения Windows API
var
LineNum: Longint;
CharsBeforeLine: Longint;
begin
LineNum := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);
CharsBeforeLine := SendMessage(Memo1.Handle, EM_LINEINDEX, LineNum, 0);
Label1.Caption := 'Line ' + IntToStr(LineNum + 1)
Lebel2.Caption := 'Position ' + IntToStr(Memo1.SelStart - CharsBeforeLine + 1);
end;
14. Постранична прокрутка TMemo, реализация Undo и определение строки курсора.
Как прокрутить содержимое компонента
Приведенная ниже процедура предполагает, что фокус находится на
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_F8 then
SendMessage(Memo1.Handle,
WM_VSCROLL,
SB_PAGEDOWN,
0)
else if Key = VK_F7 then SendMessage(Memo1.Handle, WM_VSCROLL, SB_PAGEUP, 0);
end;
Если определено всплывающее (popup) меню для
Если встроенного Undo достаточно, то это очень просто:
Memo1.Perform(EM_UNDO, 0, 0);
Для переключения свойства
Undo1.Enabled := Memo1.Perform(EM_CANUNDO, 0, 0) <> 0;
Как можно определить, на какой строке в
Весь фокус в сообщении
procedure TMyForm.BitBtn1Click(Sender: TObject);
var
ILine: Integer;
begin
ILine := Memo1.Perform(EM_LINEFROMCHAR, $FFFF, 0);
MessageDlg('Line Number: ' + IntToStr(ILine), mtInformation, [mbOK], 0);
end;
15. Как поместить BLOB Memo в компонент TMemo?
Попробуйте так:
procedure TForm1.Button1Click(Sender: TObject);
var
S: TBlobStream;
begin
S := TBlobStream.Create(Table1BBBMemo, bmRead);
Memo1.Lines.LoadFromStream(S);
S.Free;
end;
где:
1.
2.
16. Как показать содержимое Memo поля в TDBGrid?