掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
行の取得がうまくいかないときがあるは何故ですか? (ID:43111)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
本当にtakeさんの仰る事を理解されたのか疑問に思うほど 透視能力が必要な質問ですが(^^; >やはり、エラーは止まりません。 とは、何か例外が発生する(エラーメッセージウィンドウが表示される)んでしょうか? それとも >gyo:=((i+y-5) div 17); S:=Copy(RichEdit1.lines[gyo],7,4); でgyoの値が期待した値にならないということでしょうか? 「エラーは止まりません」と書かれると、大抵の人は前者を想像します。 >いらない文がありますが とは RichEdit1.visible:=True; RichEdit1.SelStart :=0;// カーソルを最初に移動する これらの事でしょうか? 多少の余計な部分はあっても大した事ではないですが ここまで書いたら肝心の「データを表示する」部分が、どこにどのように書かれているかが 重要なヒントになる可能性があります。 おそらく RichEdit1.SelStart :=0; の後に RichEdit1.Lines.LoadFromFile(... とか RichEdit1.Lines.Add(... とか RichEdit1.Lines.Text := ... とかでしょうけど。 ボタンAとボタンBではクリックイベントの内容は同じですか? 特に「データを表示する」部分ですけど。 で i:=SetScrollPos(RichEdit1.Handle,0,0,BO); この BO ってどこで宣言されてます? まぁ、引数の意味から多分booleanの変数でTrueになっているのだろうと思いますが だとすると、この文は横スクロールバーを左端に持っていくだけですので クリックされた行の取得にはあまり関係ないかと。 全体としてやりたいことは 1.ABどちらかのボタンをクリックして、何らかの文字列をRichEditに読み込む 2.表示された文字列のある行を右クリックすると、その行だけをRichEditに再表示する 3.指定した行に空白が含まれていた場合は、最初の空白以降は表示しない でいいでしょうか? 今までにアップされた質問内容とソースの断片から、こんな推測をしていますが この前提でよろしいですか? 今回の質問ではOnMouseDownイベントで右クリックかどうか判断していませんが 前回の質問で右クリックにこだわっていましたので、本来は右クリックなのかと想像しましたが。 で、もし実際のソースでは右クリックの時だけに限っているのであれば うまく動作しない可能性があります。 右クリックではカーソル位置が移動しませんので。(XE2+WinXPで確認) 上記の推測に間違いがない場合は、torさんが提示されたTRichEdit.CaretPosを使って procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var s:string; begin if RichEditFlg=true then //これが何なのか分かりませんが begin s := richedit1.Lines[richedit1.CaretPos.y]; p := pos(' ', s); if P > 0 then s := copy(s, 1, p - 1); richedit1.Clear; richedit1.lines.add(s); end end; これでいいのではないかと思いますが。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.