ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 08:23

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 12 件の記事 ] 
作成者 メッセージ
 記事の件名: 番号
投稿記事Posted: 2006年5月12日(金) 22:56 
MainWndのEditBoxの左端に「ActiveBASIC」のように行数の番号を表示
したいのですが、名前の通りまったくの初心者のため、ソースと詳しい解説
をお願いします。ABの上、中級者の方のお世話になりながら自分の技術を
少しでも磨けたらいいと思っています。

よろしくを願いします。


通報する
ページトップ
   
 記事の件名: Re: 番号
投稿記事Posted: 2006年5月12日(金) 23:58 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
> MainWndのEditBoxの左端に「ActiveBASIC」のように行数の番号を表示
> したいのですが、名前の通りまったくの初心者のため、ソースと詳しい解説
> をお願いします。
外見上はこうしたいってことですよね。 とりあえず、自分だったらCreateWindowEx()関数でウィンドウを作って、そのウィンドウのクライアント領域左側を適当な分だけ行数表示の領域と考え、そこにはDrawText()関数とかDrawTextEx()関数で行数を描写、右側にはユーザーが入力した文字列を描写って感じにします。

もちろんこれは独自にエディットコントロールを作る必要があるので初心者の方には難しいと思います...。

で、申し訳ないですけど、通常のエディットボックスやリッチエディットではどうやるのか分かりません...。


通報する
ページトップ
 記事の件名: EditBoxの作り方は
投稿記事Posted: 2006年5月14日(日) 13:14 
7さんのおっしゃっていた、自分でEditBoxをつくるとはどうすればいいのですか。

できればソースと解説をお願いします。


通報する
ページトップ
   
 記事の件名: Re: EditBoxの作り方は
投稿記事Posted: 2006年5月15日(月) 03:25 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
> 7さんのおっしゃっていた、自分でEditBoxをつくるとはどうすればいいのですか。
  • 1. ウィンドウを作る。
    • 1. スクロールバーを操作する関数群を実装する。
      • 1. etcetc...
      2. WM_CHAR が送られてきた時の処理を実装する。
      3. リサイズ時の処理を実装する。
      4. キャレットを操作する関数群を作る。
      • 1. etcetc...
      5. etcetc...
    2. 文字列を操作する関数群を作る。
    • 1. 循環リストを実装する。(行単位での双方向が望ましい?)
      • 1. しかるべき行のノードの追加、挿入、削除する機能を実装する。
        2. しかるべき行のノードにデータを適切に追加、挿入、削除する機能を実装する。
        3. etcetc...
      2. etcetc...
    3. ウィンドウに文字列を描写する関数群を作る。
    • 1. ダブルバッファリングを実装する。
      2. しかるべき位置に行数を描写する必要がある。
      3. しかるべき位置に入力された文字列を描写する必要がある。
      4. etcetc...
> できればソースと解説をお願いします。
ソースなんて隠す必要あるのかなんて考える人間なので提示できたらするんですけど、できないのでしません。
というか、以前のソースをどこまでも改造していけばいつかできると思います。
ウィンドウクラスの情報を設定する時に背景色を設定し忘れてるのとか訂正しながら。

歯磨いて寝よっ。


通報する
ページトップ
投稿記事Posted: 2006年5月21日(日) 12:31 
本当にすみません。

名前の通りまったくの初心者のため、解説に加えソースコードも投稿していただけませんか。

7さんには本当にご迷惑をおかけしていることはよく存じています。

お願いします。m(..)m


通報する
ページトップ
   
 記事の件名: 本当にすみません。
投稿記事Posted: 2006年5月21日(日) 12:41 
5/15日の投稿から一週間いろいろ検索して、打ち込んでやったのに、

警告....だの...が無効だのいろいろエラーがでて、僕のような「カス」の技術では
とてもできないテクニックです。

そこで、7さんなど、ヘビーユーザーの方に、やり方を細かく教えていただき
これ以上ヘビーユーザーに方々にやり方を聞くことのないように、

自分のテクニックを磨こうと今思っています。

いろいろとすみません。どうか、お願いします。


通報する
ページトップ
   
 記事の件名: できました。
投稿記事Posted: 2006年5月21日(日) 13:19 
何とか番号を表示するようにはなったのですが、肝心の文字が打てません。
打ち込むにはどうすればいいでしょうか。

また、改行したときに、番号もそれにあわせて、増えていくようにするにはどうすれば
いいですかね。

お願いします。


通報する
ページトップ
   
 記事の件名: Re: できました。
投稿記事Posted: 2006年5月21日(日) 21:52 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
> 何とか番号を表示するようにはなったのですが、肝心の文字が打てません。
> 打ち込むにはどうすればいいでしょうか。
ユーザーがキーボードを押した時の処理も全部自分で実装しなくてはなりません。

> また、改行したときに、番号もそれにあわせて、増えていくようにするにはどうすれば
> いいですかね。
例えば、ユーザーが改行するたびに行数をカウントアップしてその数だけ番号を描写したらいいんじゃないでしょうかねぇ。
随分と手抜きで間の抜けた作りなので参考程度にしかなりません。

このサイトを参考にご自分で頑張っては如何でしょう。
http://vivi.dyndns.org/tech/tech.phtml
自分は「行単位双方向リンク」という項目に悩んでます...。

所でエディットボックスに行数を表示する機能を考えて思いついたんですけど、エディットボックスを2つ用意して1つは行数だけ表示してれば良さそうですよね。
もう1つが改行するたびに行数を増やして。(意味不明かな...?)
入力するエディットボックスに同期させないと無理なんですけどねぇ。


通報する
ページトップ
投稿記事Posted: 2006年6月01日(木) 11:14 
すみません、ここへ割り込んでいいのかどうか。
下記で悩んでいて7さんの文章がが目に入りましたので飛びつきました。

2つのエディットボックスを用意して、スクロールバーで2つのエディットボックスをスクロールさせる方法についてお知らせ下さい。
初心者向けにお願い致します。

>所でエディットボックスに行数を表示する機能を考えて思いついたんですけど、エディットボックスを2つ用意して1つは行数だけ表示してれば良さそうですよね。
>もう1つが改行するたびに行数を増やして。(意味不明かな...?)
>入力するエディットボックスに同期させないと無理なんですけどねぇ。


通報する
ページトップ
   
投稿記事Posted: 2006年6月01日(木) 14:02 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
> 2つのエディットボックスを用意して、スクロールバーで2つのエディットボックスをスクロールさせる方法についてお知らせ下さい。
お知らせです。
思いついただけで出来るか試してないので動くか分かりませんよ。

まず、スクロールバーが動いた時(動き終わった時か)にGetScrollInfo()関数でスクロールバーの情報を取得。
次に2つのエディットボックスに対し、SetScrollInfo()関数でスクロールバーの情報を設定してやります。
これでいいんじゃないかと思ったんですけど...。

> 初心者向けにお願い致します。
スクロールバーについて、ヘルプを見たり、インターネットで検索してみて、それで分からないことがあったらまた質問して下さい。


通報する
ページトップ
投稿記事Posted: 2006年6月06日(火) 11:45 
7さんありがとうございます。
思うようにスクロールバーを操作するには時間がかかりそうなので、2つの内容をTABで1行にくっつけて、1つのエディットボックスでスクロールさせる姑息な手段をとりました。
掲示板ではHELPにないコマンドなどを見かけます。
ABHelperを参考にさせていただいておりますが、更なる充実を待ち望んでいます。


通報する
ページトップ
   
投稿記事Posted: 2006年6月06日(火) 20:49 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
引用:
思うようにスクロールバーを操作するには時間がかかりそうなので、2つの内容をTABで1行にくっつけて、1つのエディットボックスでスクロールさせる姑息な手段をとりました。
いや、スクロールバーを同期させようってのも結構姑息なやり方だと思いますよ。

解決したようですけど、とりあえず同期させようと思ってやってみました。ちょっと面倒そうです...。
Edit1のスクロールバーの情報を取得、Edit2のスクロールバーの情報を設定しようとすると、Edit2のスクロールバーが有効状態(?)じゃないと設定できなくて、まずこれが問題です。
適当にEdit2の内容を改行してスクロールバーを有効状態にして、スクロールバーの情報を設定するんですけど、Edit2に表示される内容はスクロールしてくれないんですよね。盲点でした。これも問題です。

EM_SCROLLを使ったり色々やればできるのかもしれませんけど、面倒なので止めます。

> 掲示板ではHELPにないコマンドなどを見かけます。
> ABHelperを参考にさせていただいておりますが、更なる充実を待ち望んでいます。
ActiveBasic付属のヘルプに載っていないヘルプから作っていけば読む方としては効率が良いんでしょうけど、現状は...。
頑張ろうと思います。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 12 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[18人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean