トップページ⇒tech
990コメント312KB

C++Builder相談室 Part19

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2008/08/01(金) 16:30:32
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
※2008/07よりCodeGear(Borland IDE/DB部門)はBorlandからEmbarcaderoに移動しました

【前スレ】
C++Builder相談室 Part18
http://pc11.2ch.net/test/read.cgi/tech/1188607282/

過去スレ・関連サイトは>>2-7あたり。

※Borland C++ Compiler 5.5.1についての質問は以下のスレへ
タダで使えるBorland C++ Part5
http://pc11.2ch.net/test/read.cgi/tech/1135127048/
※BDS(Borland Developer Studio)の総合スレはこちら
Borland Developer Studio 2006 No.13
http://pc11.2ch.net/test/read.cgi/tech/1175861395/
※CodeGear(Borland/Embarcadero)関連はこちら
【CodeGear】Embarcaderoオッチャ その10
http://pc11.2ch.net/test/read.cgi/tech/1216250111/

<関連スレ>
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
[Tips]Borland C++Builder ちょいテク No.01
http://pc11.2ch.net/test/read.cgi/tech/1154580209/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
0809デフォルトの名無しさん2009/08/15(土) 02:14:29
TListViewのKeyDownイベントでスペースキーが押された際選択されているアイテムのチェックを反転する処理を

for( int i = 0; i < ListView->Items->Count; i++ ){
    if( ListView->Items->Item[ i ]->Selected ){
        ListView->Items->Item[ i ]->Checked = !ListView->Items->Item[ i ]->Checked;
    }
}

こんな感じで実装しました。
しかし、通常のTListViewの仕様によって一番最後にクリックしたアイテムだけ反転が更に反転して元に戻ってしまいます。
Builderは2009です。
スペースを使用するのを変えずに選択されたアイテムが問題なく反転する方法はないでしょうか?
0810デフォルトの名無しさん2009/08/15(土) 05:27:03
>>809
ItemFocusedで現在フォーカスが当たっているアイテムが分かる
0811デフォルトの名無しさん2009/08/15(土) 22:36:02
基本的なことで恐縮ですが
Builderでクラスを作成すると、constructorは自動作成されますけど
destructorは作成されません。
これって、VCLを継承したクラスは、destructorは使わない方がイイということなんでしょうか。
それとも、別に深い意味はないんでしょうか。
0812デフォルトの名無しさん2009/08/15(土) 22:54:34
>>811
virtual なんで。
下位クラスの destructor が呼ばれていて、そのクラスに開放すべきデータがないなら不要です。
自分で new したものについては自動で解放されないので 明示的に destructor を作成です。
0813デフォルトの名無しさん2009/08/15(土) 22:56:28
あー>>812はVCLを継承したクラスね
08148112009/08/15(土) 23:16:23
さんくすです。
後始末用に自前でdestructorを作っていい訳ですね。
08158122009/08/15(土) 23:27:17
>>812
>下位クラスの destructor が呼ばれていて
ごめん、上位クラス(継承元)の間違い。
0816デフォルトの名無しさん2009/08/15(土) 23:55:26
□■□■□■□■□■□■□■□■
現在、複数の韓国IPより2chが攻撃を受けています。
その為、下記スレにて作戦本部を設営しています。
数多くの人たちの力が必要です。
今こそ2chの力を結集しましょう!!

http://c.2ch.net/test/-/news4vip/1250344557/

■現状
現在第一波攻撃終了(挨拶程度)
十分な手応えを得る

第二波予定
8月16日に予定本部にて逐次確認を!
(コミケ組み帰還後の22時を目処に本作戦を実行する)

※予備日 8月17日夜を予定
□■□■□■□■□■□■□■□■
0817デフォルトの名無しさん2009/08/16(日) 20:07:36
>>810
ありがとうございました。
無事できました。
0818デフォルトの名無しさん2009/08/16(日) 21:46:50
イメージに張り付けたJpegを下記の方法で印刷したところ、
大変小さくいんさつされ、しかもドットがぼやけて印刷(PDF)されます。

以下のソースで注意するところがあれば、
教えてください。


void __fastcall TForm2::Button1Click(TObject *Sender)
{
if(PrintDialog1->Execute()){
Printer()->BeginDoc();
Printer()->Canvas->Draw(0, 0, Image1->Picture->Graphic);
Printer()->EndDoc();
}

}
0819デフォルトの名無しさん2009/08/16(日) 22:59:57
画面は72dpi位だが、プリンターは最低でも300dpiはあるだろう。
0820デフォルトの名無しさん2009/08/16(日) 23:25:17
つまり、A4に出力したければ、imageのdpiという値をA4サイズ位に
大きく(imageのWidthとHeight)する必要がある。

という風にレスを受けて思いました。
つまり、印刷時に、ImageのWidthとHeightを一時的に
大きくして、
Printer()->Canvas->Draw
する。と理解しました。

Image1->Width=1000;
Image1->Height=1000;

やりましたが、だめでした。
0821デフォルトの名無しさん2009/08/17(月) 00:42:16
FAQだけど、Image-Graphic->Widthみたいにしないと
もう少し基本を理解した方が良い
0822デフォルトの名無しさん2009/08/17(月) 00:46:37
こぴぺみすったけど、わかるよね
Imageでなく、内包しているPictureのサイズを変更しないと駄目
0823デフォルトの名無しさん2009/08/17(月) 00:51:18
精度求めないならStretchDrawでいいわけだし
0824デフォルトの名無しさん2009/08/17(月) 08:26:08
内部のPictureサイズかなとおもっていましたが、
とりあえず、Imageのサイズを変更した結果です。

なお、読み込みjpegをwinフォトギャラリで印刷(pdf)したところ、
普通に印刷できます。

このことから、Imageかなと思ったしだいです。

つまり、Imageに読み込んだ時、
Pictureのサイズが変更されたとなります。
なお、読み込みには、プロパティーのpictureから
静的に読み込んでいます。
0825デフォルトの名無しさん2009/08/17(月) 21:18:40
どうしようもない人だな。
0826デフォルトの名無しさん2009/08/18(火) 17:08:37
TChartを印刷する方法を教えてください
0827デフォルトの名無しさん2009/08/18(火) 17:13:09
あ、すみません言い忘れですが
Printer->Canvasの指定したRectに描画したいです。
0828デフォルトの名無しさん2009/08/19(水) 11:24:21
質問です(BCB6):
プロジェクトコードっていうか、WinMainの入った.cppってありますよね?
そのWinMain部分をifdefでカットして、複数の物を使うって、ありでしょうか?
今そうやったところ、リンクが遅いように見えるのですが、禁じてなのかな?
0829デフォルトの名無しさん2009/08/19(水) 11:39:19
TChartの折れ線グラフで折れ線グラフを2つ使用して
1つは普通にグラフを書いてもう1つは指定した範囲に四角書きたくて
AddXYで四角になるようにXとYの値を入れても四角になってくれません
TChartって戻る線は書けないんですか?
0830デフォルトの名無しさん2009/08/19(水) 14:32:59
TChartのPointerでポイントとポイントを線で結ぶにはどうしたらいいですか?
0831デフォルトの名無しさん2009/08/19(水) 18:52:53
>828
IDEが作ったコードは
プロジェクトの設定等を変えると自動的に変更される可能性がある。
そのときに余計なコードがあると元に戻らなくなる可能性がある。
それでも泣かないなら、やってもいい。

リンクが遅いのは気のせい。
08328232009/08/19(水) 19:58:13
�d

とりあえず、やってみまつ
0833デフォルトの名無しさん2009/08/19(水) 19:58:55
↑
ゴメン、823じゃなくて、828です。
0834デフォルトの名無しさん2009/08/23(日) 14:37:04
Delphiに感染するウィルスってC++Builderにも感染する?
フォルダ調べると sysconst.dcu があるんだけど
0835デフォルトの名無しさん2009/08/24(月) 10:21:55
それ知りたいおね。

C++ BuilderってDelphiの上にC++インターフェース被せただけだし。
0836デフォルトの名無しさん2009/08/24(月) 15:32:12
TOpenDialogで開いた時に日時の新しいもの順に表示させておく方法を教えてください
0837デフォルトの名無しさん2009/08/24(月) 17:19:52
興味本位にbcb5でboost1.39をコンパイルしてみましたが
うまくいきませんでした。(正規表現を使ってみたかった)
無いなら無いで問題ないのですが、みなさんboostは使ってますか?
0838デフォルトの名無しさん2009/08/24(月) 17:24:17
>>837
bcbboostってのがあるけどさすがに5でビルドは無理そう
ttp://bcbboost.sourceforge.net/
0839デフォルトの名無しさん2009/08/24(月) 19:32:40
BCB6でboostを使ってるんですが、
プリコンパイルヘッダに入らないんで毎回コンパイルに凄い時間が掛かる。
何とかビルド時間短縮する方法ないんかね?
0840デフォルトの名無しさん2009/08/24(月) 20:18:10
#pragma hdrstop加えてもだめ?
0841デフォルトの名無しさん2009/08/24(月) 20:25:53
>>836
TWinControlのWndProc DefWndProcとか使ってWM_CREATEをフックして、FolderView(SysListView32)を操作するしかないんじゃないかな
0842デフォルトの名無しさん2009/08/24(月) 20:52:19
>>837
国産鬼車が使える
Rubyも使ってるらしい実績
0843デフォルトの名無しさん2009/08/24(月) 20:59:47
ヘッダ内に

 const int hoge=0;

のような定数宣言があるとPCHが作れないんじゃなかったか?
たぶんhdrstopでは意味がない。


0844デフォルトの名無しさん2009/08/24(月) 21:00:53
Delphi用のTRegExprを使うという邪道もBCBなら許されてる
0845デフォルトの名無しさん2009/08/24(月) 22:57:07
設定でプリコンパイルのパスを削除すると次から自動で規定の場所に作ってくれるようになるけどそれとは関係ないかな
0846デフォルトの名無しさん2009/08/25(火) 01:16:28
>>843
そうなんだ
ヘッダだけインクルードして一度コンパイル済みのlibを
#pragma link "***.lib"
とかやってもだめなの?
0847デフォルトの名無しさん2009/08/25(火) 01:18:42
libじゃないobjだ
0848デフォルトの名無しさん2009/08/25(火) 12:49:33
>>837
正規表現だけでいいならpcre使うとか。
http://qux.haun.org/note0309.html
0849デフォルトの名無しさん2009/08/25(火) 14:41:18
なぜ鬼車使わずにマイナーなやつ紹介するのかわからん。
国産だから日本語に向いている事は間違いない。 
利用実績が多く信頼ある、
0850デフォルトの名無しさん2009/08/25(火) 14:42:55
>>838
専用のがあるんですね。参考にしてみます。
>>842
Rubyで使われてるんですか。
やっぱり触っとくべきか・・
>>844
一応標準に入ってたTRegexpの存在は知っていたのですが
ヘルプが見つからなかったので、本格的に使うなら資料の多
そうなboostの方がいいのかなと考えていました。
>>848
正規表現だけではなく他の気になる機能も触る、もしくは参考
にしてみたかった次第です。
(とんでもなく勉強になると聞いたので)
PCREの存在は知らなかったので参考にしてみます。

みなさん、ありがとうございました。




0851デフォルトの名無しさん2009/08/25(火) 14:45:59
>>842>>849
鬼車って正規表現ライブラリだったんですね。
失礼しました。
こちらも参考にしてみます。ありがとう。
0852デフォルトの名無しさん2009/08/25(火) 14:51:08
>>850
JRubyには入ってるらしいが、Rubyに入ってるという記事は見つからない。
Rubyと鬼車の作者は仲が悪いらしい。今は知らない。



JRuby 1.1 RC版登場 - 鬼車取り込みと143の問題修正
http://journal.mycom.co.jp/news/2008/01/09/029/index.html
0853デフォルトの名無しさん2009/08/25(火) 14:56:10
>>851
鬼車は導入が簡単。 BCBでも動作する。 
boostの正規表現は、最新版BCBでも動作しないと思う。 
必要な部品の一部がコンパイルとおらないため。
0854デフォルトの名無しさん2009/08/25(火) 19:36:08
>>853
cb2009で使ってるよ。
0855デフォルトの名無しさん2009/08/26(水) 01:32:56
正規表現で( )に挟まれている部分を抽出しようと、
\(.*?\)という検索したら期待の動作しなくて困った。
\\(.*?\\)が正解なんだな。 これは気を付けないと間違えます。
数時間悩んだ。 正規表現の\と、C言語の\が同時に出てくるケース。
0856デフォルトの名無しさん2009/08/26(水) 10:26:08
TChartで動的にシリーズを追加する方法を教えてください
0857デフォルトの名無しさん2009/08/27(木) 01:46:43
失礼します。
BCB6で下記URLの通りに入力してみましたが、プレビュー画面に何も表示されません。
何が問題なのでしょうか・・・?
Edit1->Textには当然文字を入れてあります。
http://www2.ttcn.ne.jp/tkky/Tips/QuickRep/quickrep1.htm
0858デフォルトの名無しさん2009/08/27(木) 16:09:55
>>849
他がマイナーと言いながらマイナーな奴紹介するおまいが好きだw
0859デフォルトの名無しさん2009/08/27(木) 16:26:40
うるせー雑魚
0860デフォルトの名無しさん2009/08/27(木) 20:36:34
>857
最低一つバンドが必要ですな。ディデールバンドとか。
その上にTQRLabelを配置すると印刷されるようになる。
0861デフォルトの名無しさん2009/08/27(木) 21:37:35
>>860
おお、出来ました!
QuickRepを貼りつけただけじゃダメなんですね。
ありがとうございます!!
0862デフォルトの名無しさん2009/08/28(金) 13:24:40
BCB5を使用しています。

極まれにデストラクタが呼ばれなくなることがあるんですが
そういう経験ありませんか?
何かこうすれば起きるみたいなことがあれば教えて頂きたいです。

自分の場合
・三項演算子を使用している
・参照、ポインタではないクラスを返す関数で直接メンバを使う
 Func().Func(); とか(もしかしてこれ自体がまずい?)
・テンプレートを使用している
上記が絡むとまれに現象が出ていました。
デストラクタが呼ばれたかは理由がありCodeGuardではなく
intカウンタでやってました。

自分のバグではないかと思っていましたが、クラス自体は変えないで
すこし書き方を変えると直ったりとなかなか再現できずにいます。


0863デフォルトの名無しさん2009/08/29(土) 03:54:27
>>851
boostはバージョンいくつかでボーランドの古いコンパイラーのサポート切ってる。
だからバージョンによっては何してもコンパイル通らない。
0864デフォルトの名無しさん2009/09/01(火) 12:07:14
QuickRepでDBなしで表を印刷したいのですが
StringBandを2つ追加し、そこにLabelは追加して
項目名とデータを書くところまではいいのですが線が書けません
枠線は設定できるのですが、各々のセルを区切るための縦線とかは
どうやってかけばいいですか?
LabelのFrameだと左右中央配置はできても縦の中央配置ができないっていう
とんでもないバグがあるし・・・
Shapeを1つ1つ配置するしかないですか?
0865デフォルトの名無しさん2009/09/02(水) 23:51:39
正直、面倒だね。
ClientDataSetでも使って出力した方が手っ取り早い。
0866デフォルトの名無しさん2009/09/07(月) 17:42:06
TChartでクリック位置のY軸値とX軸値を取得する方法を教えてください
0867デフォルトの名無しさん2009/09/08(火) 06:54:06
>>864
普通のアプリレベルならTPanelでいいんだけどな
0868デフォルトの名無しさん2009/09/09(水) 15:56:01
だれか>>866を教えてください><
0869デフォルトの名無しさん2009/09/09(水) 16:58:41
MouseDown
0870デフォルトの名無しさん2009/09/09(水) 17:07:55
だれか>>866を教えてください><
0871デフォルトの名無しさん2009/09/09(水) 17:40:03
だれか>>866を教えてください><
0872デフォルトの名無しさん2009/09/10(木) 15:55:26
MemCheckについて教えていただきたいのですが、
BCC5でも使用できるでしょうか?

ttp://www.yks.ne.jp/~hori/MemCheck.html

ためしに組み込んでみましたが、開始ログ以外にログがうまくでません。

デルファイでしか無理でしょうか?
0873デフォルトの名無しさん2009/09/10(木) 17:27:24
だれか>>866を教えてください><
0874デフォルトの名無しさん2009/09/10(木) 21:26:21
>>868
>>870
>>871

>>869で答えは出ている
0875デフォルトの名無しさん2009/09/10(木) 21:28:44
グラフ上でのX軸、Y軸ってことか?
0876デフォルトの名無しさん2009/09/10(木) 21:56:51
ハァ?
0877デフォルトの名無しさん2009/09/11(金) 10:38:37
だれか>>866を教えてください><
0878デフォルトの名無しさん2009/09/11(金) 12:04:46
でけた・・・
MouseDown とか馬鹿みたいなレスしかできない奴じゃ知らなかったんだろうな
0879デフォルトの名無しさん2009/09/11(金) 14:13:38
まーた基地外が湧いてるな
0880デフォルトの名無しさん2009/09/11(金) 14:45:57
だれか>>866が出した答えを教えてください><
0881デフォルトの名無しさん2009/09/11(金) 14:47:51
>>869=>>879 ですねわかります。
0882デフォルトの名無しさん2009/09/11(金) 17:28:29
わかりません。あれはなんですか
0883デフォルトの名無しさん2009/09/11(金) 17:33:09
それです
0884デフォルトの名無しさん2009/09/11(金) 19:01:50
へんなおじさんです
0885デフォルトの名無しさん2009/09/12(土) 11:14:31
バカ専用の超初心者スレがだいぶ前にはあったよな。
あのスレが無くなってココにクレクレ小僧が来るようになってしまった訳か。
0886デフォルトの名無しさん2009/09/14(月) 14:22:57
>>885みたいなクズも来るようになっちゃったけどな
0887デフォルトの名無しさん2009/09/14(月) 16:07:57
2009Pro を使ってるんだけど、ソースを右クリックで出る、「別の編集ウィンドウで開く」で、
同じファイルを2つのウィンドウで開けることもあれば、ドックが外れるだけのこともある。
これってどういう法則があるの?イラツク。
0888デフォルトの名無しさん2009/09/14(月) 16:55:28
>856
Lineを2本加える時、こんな感じでやってた
MyLineSeries[0]=new TLineSeries(Chart1);
MyLineSeries[1]=new TLineSeries(Chart1);
for(int i=0;i<=1;i++){
MyLineSeries[i]->ParentChart=Chart1;
MyLineSeries[i]->HorizAxis=aBottomAxis;
MyLineSeries[i]->XValues->DateTime=true;
MyLineSeries[i]->VertAxis=aBothVertAxis;
}
0889デフォルトの名無しさん2009/09/15(火) 11:48:10
>866
クリックではないけれど
void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
StatusBar1->Panels->Items[0]->Text=X;
StatusBar1->Panels->Items[1]->Text=Y;
int iCursol1,iCursol2;
iCursol1=Chart1->Axes->Bottom->CalcPosPoint(X);
iCursol2=Chart1->Axes->Left->CalcPosPoint(Y);
StatusBar1->Panels->Items[2]->Text=iCursol1;
StatusBar1->Panels->Items[3]->Text=iCursol2;

}
0890デフォルトの名無しさん2009/09/15(火) 12:58:11
えっ
0891デフォルトの名無しさん2009/09/15(火) 13:59:40
それ座標でないの?ww
0892デフォルトの名無しさん2009/09/15(火) 14:29:22
フォームのイベントが多すぎてコードが読みにくくなっています。

関連イベントに分類してユニットを分けて書くことはできるのでしょうか?
0893デフォルトの名無しさん2009/09/15(火) 14:38:12
できる
0894デフォルトの名無しさん2009/09/15(火) 14:56:15
ま、そのー・・・
やりかたっちゅーか・・・


おせて。。

実務じゃなく、趣味でやってるだけなんですが、
実務だったら、当然分離してやってるもんなんですか?
0895デフォルトの名無しさん2009/09/15(火) 15:04:19
できますよ
0896デフォルトの名無しさん2009/09/15(火) 15:19:28
にゃにゃん
0897デフォルトの名無しさん2009/09/15(火) 15:39:11
またエロか
0898デフォルトの名無しさん2009/09/15(火) 22:07:06
>892
ファイル−>新規作成−>ユニット
新たにつくったユニットに元のユニットのヘッダーをインクルード(ファイルー>ユニットを使う)
0899デフォルトの名無しさん2009/09/16(水) 13:00:03
でも分割するとデザイナやオブジェクトインスペクタからイベントハンドラのコードに
ジャンプできなくなるよね
0900デフォルトの名無しさん2009/09/16(水) 13:18:49
普通は処理側をクラス化して、
イベントハンドラ内を数行に短くする。
0901デフォルトの名無しさん2009/09/16(水) 14:29:18
TSpeedButtonをいくつか配置してGroupIndexを全て1にして
どれか押されたら凹んでるのが自動で凸になるようにしてるのですが
GroupBox内にあるTSpeedButtonはGroupIndexを1にしてもグループ外の
ボタンと同期してくれません。
そこでGroupBoxから出してGroupBoxの上に配置しようとしたら
前面表示にしてもGroupBoxの下に隠れてしまいます。
別グループのTSpeedButtonも同期させる方法を教えてください。。
0902デフォルトの名無しさん2009/09/17(木) 01:51:53
>>901
ヒント、Bevel
0903デフォルトの名無しさん2009/09/17(木) 10:09:08
>>902
知らないならレスしないで下さいウザいだけです。
0904デフォルトの名無しさん2009/09/17(木) 11:37:01
>>903
ヒント:ヘルプ読め、カス。
0905デフォルトの名無しさん2009/09/17(木) 11:58:54
>>904
日本語を理解してからレスして下さい。
0906デフォルトの名無しさん2009/09/17(木) 15:17:48
Program Files\Borland\CBuilder5\Bin直下にあるborlndmm.dllより、
EXEファイルがが生成されるフォルダにある同名のDLLを優先して呼び出す設定方法はあるでしょうか?
(プログラム上ではなく、開発環境の設定で)

Binフォルダのファイルを入れ替えるのが、一番簡単なのはわかっているのですが、
できればBinフォルダのファイルは入れ替えずに使用したいです。

お手数ですが、よろしくお願い致します。
0907デフォルトの名無しさん2009/09/17(木) 15:26:42
ん?
普通に最初はexeがあるフォルダを参照するんじゃね?
その後にパス参照じゃなかったっけ?
0908デフォルトの名無しさん2009/09/17(木) 15:37:54
>>907
私もそのように思っていたのですが、Binのファイルを削除すると正常に動作するので、
私の開発環境の設定では、おそらくBinフォルダを優先して参照しています。
0909デフォルトの名無しさん2009/09/17(木) 16:31:56
プロジェクトの設定でBinが優先されてるんじゃ?
レス数が900を超えています。1000を超えると表示できなくなるよ。