掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Memoの背景を画像にするには? (ID:39188)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
コンポーネントパレットに登録させて、そこからFormに貼り付けたいという事ならば・・・。 Formにのせるには、そのCuteMemoコンポーネントをインストールしなければなりません。 「delphi コンポーネント インストール 2007」などでググると、たぶん絵付で見つかります。 コンポーネントのインストールの仕方は、けっこう面倒で、そういった手順書を読むのが一番ですが、管理が面倒で煩雑になってる人も多いと思います。 インストールする事で、何がどうなるのかよく理解していないと、今回だけでなくいろいろな開発を重ねているうちに、たぶん手におえなくなる気がします。 動的に作成すればインストールしなくてもパスが通っていれば使えます。 uses に CuteEdit を加え TFormのconstructorをoverride するか FormCreateイベントで FMemo:= TCuteMemo.Create(Self); FMemo.Parent:= Self; のように書けばOK。 イベントハンドラもコードで設定しなければなりません。 FMemo.OnChange:= MemoChange; のように。 他にも方法があって、TCuteMemoがTMemoを継承してて、メンバーも互換なら type TMemo = class( TCuteMemo) end; とでもしてやると、コンパイル時に TMemo が TCuteMemo に差し換わります。 (Unit1.pas でもいいし、他のユニットを作ってもOK) 推奨される方法ではないかもしれませんが、ちょっとした仕様変更なのでコンポーネント化も面倒だし、デザイナを使って本来のTMemoとの共通部分のリソース(イベントハンドラや、テキストの内容や各種プロパティ)を編集したいという場合には、使える手です。 で、背景を透明にするだけなら、以下の方法でできます。 TMemo は、Paintをoverrideしただけでは、駄目なようで。 いろいろなメッセージがとびかい、適宜キャプチャーして 描画の更新処理で変わった部分のつじつまをあわせてやらないといけません。 http://www.delphipages.com/forum/archive/index.php/t-137858.html この実装は、かなり透明にする事だけに特化したようなコードで、背景のちらつきもあります。 けっこう昔からあるサンプルコードで、あちこちで見かけるものです。 背景のちらつきは、メインフォームの DoubleBufferedをTrueにすれば抑えられますが、テキストそのもののちらつきは抑えられません。 また、上記のコードはホイールによるスクロール処理はカバーしていないようで、その時に画面が乱れるのでその点は直さなければならないでしょう。 TTransparentMemoに procedure WMWheel( var Msg: TWMMouseWheel ); message WM_MOUSEWHEEL; を追加して同じように処理してやればたぶんOKです。 とりあえず、背景に TImage を置いて、このTTransparentMemoを使えば、目的のことは達成できます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.