0

その上にいくつかのスピードボタンがある TCustomRichEdit を作成しようとしています。どうすればこの動作を達成できますか? コンポーネントの高さは、ボタン + リッチエディットである必要があります。

[B][I][U]
+-------+
|A1REdit|
|       |
+-------+

現在、次のコードがあります。

private
  FBoldButton: TSpeedButton;

constructor TA1RichEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FBoldButton := TSpeedButton.Create(Self);
  FBoldButton.Parent := Self;
end;

destructor TA1RichEdit.Destroy;
begin
  FreeAndNil(FBoldButton);

  inherited;
end;

これにより、リッチエディットにスピードボタンが描画されます (リッチエディットが親であるため)。リッチエディットの上にボタンが必要です。リッチエディットは、このコードの後であるべきように自分自身をペイントしません。

4

2 に答える 2

5

を使用しTToolbarます。

また、フォームにaTImageListとaTActionListを付けます。

ImageListをActionListとToolBarに割り当てます。

次に、いわゆる標準アクションをActionList([新しいアクション]ボタンのドロップダウンメニュー)に追加できます。

Formatカテゴリには、、、がTRichEditBoldありTRichEditItalicますTRichEditUnderline。それらを選択してクリックしますOK

次に、ツールバーに3つのツールボタンを追加し、それらにアクションを割り当てます。

この状態になり、自動的に太字、斜体、または下線が設定されたものが選択されたときの押された状態のようなものはすべて、コードを記述せずに処理されます。

于 2012-06-12T15:37:48.330 に答える
2

フレームの作成を検討してください。フレームは「複合コントロール」を作成する通常の方法であり、コーディングは必要ありません。この場合、フォームデザイナーとプロパティインスペクターだけでフレームを作成できます。

[ファイル]->[新規]->[フレーム]をクリックします([ファイル]->[新規]->[その他]をクリックして、フレームがまだnew-items-menuにない場合は、フレームを見つける必要があります)。

次に、ボタンとリッチエディットを追加します。リッチエディットのアンカーを上+左+右+下(4つすべてオン)に設定します。

これで、この「フレーム」をアプリケーションのどこにでも配置でき、単一のコントロールのように機能します。

フレームについて私が気に入らないのは、フレームをインスタンス化する人がレイアウトを編集するのを止めることができないことです。デフォルトでは、フレーム内でコントロールを移動したり、コントロールを追加したりできます。これは実際には親切です。フレームについての苦痛の。

あなたが見ることができる2番目のアプローチは「複合制御」です。TPanelから継承し、RIch Editとボタンを追加して、すべてコードで記述します。高さとレイアウトコードは、好きなように書くことができます。それとあなたが提案したこととの違いは、リッチエディットに他のコントロールを含めようとしていることです。これは、Davidが明確に述べているように不可能です。

于 2012-06-13T01:59:14.860 に答える