エディット+カレンダーについて

解決


DelDel  2007-06-06 01:36:35  No: 26510

現在、TEditとTSpeedButtonとTMonthCalenderを用いて、
日付選択・入力用のユーザコンポーネントを作成しています。

TSpeedButtonを押下された際に、TMonthCalenderを表示/非表示までは
できたのですが、表示位置をTEditの相対的な位置へセットすることが
できません。

Edit.Create時に、

TMonthCalender.Top := TEdit.Top;
TMonthCalender.Left := TEdit.Left + TEdit.Width;

ではだめなのでしょうか?

よろしくお願いします。


HOta  2007-06-06 03:26:24  No: 26511

TMonthCalender,TEditはクラスの名前です。配置したTMonthCalender,TEditは別の名前になっていませんか?


DelDel  2007-06-06 03:44:31  No: 26512

HOtaさん
ありがとうございます。

表現方法が悪く誤解されてしまったようです。
具体的には、
type
    ・
    ・
    ・
 MyCalender = class(TMonthCalendar)
  private
   FEdit: TEdit;
    ・
    ・
    ・
 MyEdit = (TEdit)
 private 
  m_inPlaceCalender : TMonthCalender;
    ・
    ・
    ・
constructor MyEdit.Create(AOwner: TComponent);
begin
    ・
    ・
    ・

  with Self.m_inPlaceCalender do
  begin
    Parent  := Self;
    TabStop := False;
    Visible := False;
    Top := Self.Top;
    Left := Self.Left + Self.Width;
  end;
end;

です。
TMonthCalenderからみた親はTEditにしてるのですが、
実行時に親(TEdit)の位置ではなくて実行環境のウィンドウの
位置にされてしまうようです。

パネルなどの上にTEditを貼り付ける場合も考慮すると
どのようにすれば良いのか分からなくて
非常に困っています。

どうかよろしくお願いします。


あれ  2007-06-06 07:36:44  No: 26513

ComboBox派生のDel田さんとは別人でしょうか?
ハンドル変えたり、まえのスレを放置するのはどうしてですか?


DelDel  2007-06-06 08:03:50  No: 26514

???????


かみづ  2007-06-06 09:21:16  No: 26515

>     Parent  := Self;
どうしてTMonthCalenderのParentにSelfを設定してるのでしょうか?

>    Top := Self.Top;
>    Left := Self.Left + Self.Width;
ということはMyEditのParentとCalenderのParentが同一である
ことを期待しているのだと思うのですが。


DelDel  2007-06-07 09:41:38  No: 26516

Create時ではなく、表示するイベントでカレンダーの親をTEditの親にしたらうまくいきました。


DelDel  2007-06-09 20:40:01  No: 26517

追加質問なのですが、
このコントロールをパネルの切れ目に貼り付けると、パネルの中におさまろうとしてしまい全部表示されません。
当然のことでしょうが・・・。
これを、コンボボックスのドロップダウンリストの用に
親枠に関係なく表示することは可能でしょうか?
また、できない場合コンボボックスのドロップダウンに
TMonthCalenderを表示することは可能でしょうか?

意味不明かもしれない内容かもしれませんが、
よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加