Savant
Цитата:
И еще: можно ли получить хендл контрола на форме, если известен его номер?
|
Можно. Если этот контрол есть твинконтрол

Помести на форму две кнопки:
Код:

procedure TForm1.Button2Click(Sender: TObject);
begin
if (Form1.Controls[0] is TWinControl) then
ShowMessage(IntToStr((Form1.Controls[0] as TWinControl).Handle));
ShowMessage(IntToStr((Button1 as TWinControl).Handle));
end;
Если ошибка, значит, это - ошибка.
GetTextLen, GetTextBuf, Text Example - пример из
Delphi Help
Код:

Этот пример копирует текст из поля редактирования в строку, заканчивающуюся нулем, а также кладёт строку в другое поле, когда пользователь кликает на кнопке формы.
procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: PChar;
Size: Byte;
begin
Size := Edit1.GetTextLen; {Получить длину строки Edit1}
Inc(Size); {Добавляем 1 для нуля}
GetMem(Buffer, Size); {Динамически создаем буфер}
Edit1.GetTextBuf(Buffer,Size); {Копируем в буфер}
Edit2.Text := StrPas(Buffer); {Конвертируем буфер в Паскалевскую строку Edit2}
FreeMem(Buffer, Size);{ Освобождаем занятую память}
end;
Заметим, что такой же результат может быть получен проще:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := Edit1.Text;
end;