На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Отображение ComboBox в текущей позиции курсора TMemo

      unit CBoxInMemo;

      interface

      uses
      Windows, Classes, Controls, Graphics, Forms, StdCtrls;

      type
      TFrmCboxInMemo = class(TForm)
      Button1: TButton;
      Memo1: TMemo;
      Label1: TLabel;
      ComboBox1: TComboBox;
      procedure Button1Click(Sender: TObject);
      procedure ComboBox1Exit(Sender: TObject);
      procedure ComboBox1Click(Sender: TObject);
      private
      { Private declarations }
      public
      { Public declarations }
      end;

      var
      FrmCboxInMemo: TFrmCboxInMemo;

      implementation

      {$R *.DFM}

      procedure TFrmCboxInMemo.Button1Click(Sender: TObject);
      var
      clientPos: TPoint;
      lineHeight: Integer;
      tmpFont: TFont;
      begin
      GetCaretPos(clientPos);
      {Use the following calculation of line height only if you want your combobox
      to appear below the char position you are referencing.}
      tmpFont := Canvas.Font;
      Canvas.Font := Memo1.Font;
      lineHeight := Canvas.TextHeight('Xy');
      Canvas.Font := tmpFont;
      with ComboBox1 do begin
      {Adjustment of Top by lineHeight only necessary if combobox is to appear below line.}
      Top := clientPos.Y + Memo1.Top + lineHeight;
      Left := clientPos.X + Memo1.Left;
      Visible := true;
      SetFocus;
      end;
      end;

      procedure TFrmCboxInMemo.ComboBox1Exit(Sender: TObject);
      begin
      ComboBox1.Visible := false;
      end;

      procedure TFrmCboxInMemo.ComboBox1Click(Sender: TObject);
      begin
      ComboBox1.Visible := false;
      end;

      end.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0424 ]   [ 16 queries used ]   [ Generated: 24.04.24, 03:16 GMT ]