まだDelphiを始めて間もない者です。
今、画面上でマウスを使ってボタンを押すと文字入力ができる
(銀行のATMのような)ひらがな一覧表(小さめのフォーム)を作っています。
そこで、文字入力をするフォーム(大きめのフォーム)がいくつかあって、それぞれのフォームの上に、そのひらがな一覧表フォームを表示したいと思ったのですが、フォーカスが文字入力のフォームに移ると一覧表フォームが消えてしまいました。
フォームを重ねて表示することはできるのでしょうか?
わかりにくい質問のしかたで申し訳ありません。よろしくお願いします。
ひらがな一覧表フォームのFormStyleプロパティを、fsStayOnTopにすればよろしいかと思います。
ありがとうございました。
かなり初歩的な質問ですみませんでした。
もうひとつ質問させていただきたいのですが・・・
文字入力フォームにはEditを3つ配置してあります。
ひらがな一覧表フォームのボタンを押すと、フォーカスがある場所というかキャレットがある場所に、文字を直接入力できるようにしようと考えているのですが、
どのようにキャレットの有無を判断したらよいかがわからなくて・・・
また初歩的な質問かもしれませんが、ご指導よろしくお願いします。
試していませんが、ActiveControlで出来ませんか?
文字入力フォームを mojiForm, ひらがな一覧表フォームの[あ]ボタンをButtonAとすると、ButtonAのOnClickにて、
begin
if Assigned(mojiForm.ActiveControl) then
begin
if mojiForm.ActiveControl Is TCustomEdit then
begin
(mojiForm.ActiveControl As TCustomEdit).SelText := 'あ';
end;
end;
end;
こんな感じに。
TCustomEditクラス以外のクラスから派生したものであれば、if文を増やせばよろしいかと。
もちろん、別の管理方法を持っているのであれば、そちらを使用してください。
これは一例ですから。
本当に助かりました!!ありがとうございました!
いろいろ調べていてActiveControlかな・・・とは思ったのですが、
使い方がよくわからなかったので、例を書いていただいて本当にうれしいです。
またお世話になる機会があるかもしれませんが、よろしくお願いします。
にしのさん、ありがとうございました。
解決チェックを忘れていました。
ツイート | ![]() |