C++Builder相談室 Part19
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2008/08/01(金) 16:30:32※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/
0910デフォルトの名無しさん
2009/09/17(木) 17:39:29プロジェクトの設定の、どこを修正すればいいでしょうか?
プロジェクトオプションの、ディレクトリ条件で、
EXEフォルダを指し示すようにしてみたのですが、うまくいきませんでした。
0911デフォルトの名無しさん
2009/09/17(木) 17:46:51試していないけど、"APP名.exe.local" というダミーファイルを、EXEのフォルダに置いてみたらどうだろう?
0912デフォルトの名無しさん
2009/09/17(木) 17:47:33早く教えて
知ったかぶり?w
0913デフォルトの名無しさん
2009/09/17(木) 20:04:320914デフォルトの名無しさん
2009/09/17(木) 21:46:360915デフォルトの名無しさん
2009/09/18(金) 09:43:550916デフォルトの名無しさん
2009/09/18(金) 16:54:57これの位置大きさはX0,X1,Y0Y1に軸値を入れて設定しますが
これをリボンのポイントみたいにピクセルで3x3みたいに指定する方法を教えて下さい。
0917デフォルトの名無しさん
2009/09/18(金) 17:30:49質問のレベルがVBユーザー並みだな
0918デフォルトの名無しさん
2009/09/18(金) 18:16:34Use pixels or Axis co-ordinates to set the X, Y bounds of the Shape.
The position ( Left, Top ) of a Shape can be specified as axis values, while the size of the Shape (Width and Height) could be specified in screen pixels:
Series1.XYStyle := xysAxisOrigin;
Series1.X0 := EncodeDate( 1998, 1,1 ); <-- in BottomAxis scales
Series1.Y0 := 1234.56; <--- in LeftAxis scales
Series1.X1:=100 ; <-- 100 pixels Width
Series1.Y1:=30 ; <--- 30 pixels Height
0919デフォルトの名無しさん
2009/09/18(金) 19:24:46知らないならレスしない方がいいよ
0920デフォルトの名無しさん
2009/09/18(金) 23:19:380921デフォルトの名無しさん
2009/09/22(火) 09:10:24少し直してSeries1の値も表示させてみた
void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
StatusBar1->Panels->Items[0]->Text=Chart1->Axes->Bottom->CalcPosPoint(X);
StatusBar1->Panels->Items[1]->Text=Chart1->Axes->Left->CalcPosPoint(Y);
if(Series1->XValues->Count!=0){
int iCount=0;
while(iCount!=Series1->XValues->Count){
if(Chart1->Axes->Bottom->CalcPosPoint(X)<=Series1->XValues->Items[iCount]) break;
iCount++;
}
StatusBar1->Panels->Items[2]->Text=Series1->XValues->Items[iCount];
StatusBar1->Panels->Items[3]->Text=Series1->YValues->Items[iCount];
}
}
0922デフォルトの名無しさん
2009/09/24(木) 07:54:46有りそうなんだけど無いのかなあ?
APIでやらなきゃだめかなあ?
0923デフォルトの名無しさん
2009/09/24(木) 11:12:46できましたありがとうございます
ちなみに、30,30の位置に10,10で○を書かせると○の左上が30,30になるのですが
これを○の中心にするにはどうしたらいいのでしょうか?
0924デフォルトの名無しさん
2009/09/24(木) 11:17:27その程度の計算ができないわけじゃあるまい
0925デフォルトの名無しさん
2009/09/24(木) 11:38:59まずX軸値と座標値は違う点を考慮して頂きたい
計算だけなら下ので軸値は求まります。
int xx = tChartShape->CalcXPosValue( dXVal );
int yy = tChartShape->CalcYPosValue( dYVal );
tChartShape->X0 = tChartShape->XScreenToValue( xx - tChartShape->X1 / 2 );
tChartShape->Y0 = tChartShape->YScreenToValue( yy - tChartShape->Y1 / 2 );
座標をずらして表示位置を修正することは可能ですが
それをやるとスケール変更した場合(アップとか)場合におもいっきりずれた位置になります
スケール変更時に毎回計算し直して位置修正をせずにできるような方法が無いと不便なので
指定位置がシェイプの中心になるようなプロパティーありませんか?
必死にヘルプを見ているのですがみつからなくて・・・
0926デフォルトの名無しさん
2009/09/25(金) 00:08:03X0, Y0 , X1, Y1は必須なので924が正解じゃないかな
http://www.steema.com/のForumにでも 質問してみてはいかがでしょうか
0927デフォルトの名無しさん
2009/09/25(金) 00:22:39TSearchRecでFindFirst 関数
0928デフォルトの名無しさん
2009/09/25(金) 00:35:470929デフォルトの名無しさん
2009/09/25(金) 16:00:00F1008メモリ不足というコンパイルエラーになります
回避方法をお教え下さい
0930デフォルトの名無しさん
2009/09/25(金) 20:58:410931本田
2009/09/26(土) 17:51:27Inprise/Borland
http://cc.codegear.com/partners/bcb5/exclusive/object_windows_library/index.html
This release of the Object Windows Library is based on the OWL 5.4
release and is denoted as OWL 5.5.
It has been ported to Borland C++Builder 5 by Yura Bidus, author of OWLNExt.
It includes source code and debug and release libraries of, OWL, BIDS and OCF.
0932本田
2009/09/27(日) 12:37:46~ OWLNext project home ~
http://owlnext.sourceforge.net/
~ Setting up C++ Builder 2010 to work with OWLNext ~
http://owlnext.sourceforge.net/setupbds2010.html
0933デフォルトの名無しさん
2009/09/27(日) 15:59:31C++Builder3で作成されたアプリケーションが
「・・・のアドレス何々でアドレス・・・に対する読み込み違反がおきました」
と表示されます。
このアプリは別のアプリケーションからのソケット通信で受信したときに発生しているようです。
客先に納入したアプリでこのようなエラーが突然発生したとの連絡があったようなのですが、
自分も含めて先輩も、このメッセージ表示だけでは分からないと匙を投げてます。
なんとかこの異常が発生しないようにしたいのですが、通信の受信後もいろんな
関数を呼び出しており、どこで発生しているか特定できません。
アドレス・・・というので、デバッグできるものでしょうか?
詳しい方、デバッグの方法を教えていただけたら嬉しいです。
よろしくお願いします。
0934デフォルトの名無しさん
2009/09/27(日) 16:57:10つ ttp://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=68566
0935デフォルトの名無しさん
2009/09/29(火) 01:08:34TCheckListBoxを仮想モードにすると
チェックBOXをクリックしてもチェックがONになりません
このままでは使い物にならないんですが、何か回避方法ありますか?
0936デフォルトの名無しさん
2009/09/29(火) 01:38:420937デフォルトの名無しさん
2009/09/29(火) 01:51:150938デフォルトの名無しさん
2009/09/29(火) 11:18:420939デフォルトの名無しさん
2009/09/29(火) 12:41:40俺はC++Builderを使ってないが、それはWindowsの汎用エラーだろ
セグメンテーション違反でぐぐれ
そのメッセージだけじゃどうしようもないし、そういうときのためのtry〜catch〜finallyだろ
メモリアドレスからのデバッグもできるだろうけど、まずソースを洗ったり、エラーを再現した方が早いだろ
先輩もどうしたらいいかわからんとは、レベルの低い会社なんだな
俺が勤めてた超零細企業じゃとてもやっていけないぞ
0940デフォルトの名無しさん
2009/09/29(火) 14:19:30C++Builderを使ってないならレスしないで下さい。ウザいだけです。
0941デフォルトの名無しさん
2009/09/29(火) 14:28:56き え ろ ぶ っ と ば さ れ ん う ち に な
0942デフォルトの名無しさん
2009/09/29(火) 18:46:23これ使うにはどうしたらいいですか
0943デフォルトの名無しさん
2009/09/29(火) 18:51:13普通にInvalidateすると全セルやっちゃうのでグリッドがチラつくから
指定した一部だけやりたいですが、他にいい方法あったらおしえてくらだい
0945デフォルトの名無しさん
2009/09/30(水) 10:34:19MDIフォームのスクロールバーを出さないようにするにはどうしたらいいですか?
HorzScrollBarとかのVisibleをfalseにしても出てしまいます
0946デフォルトの名無しさん
2009/09/30(水) 12:02:41GetWindowLong/SetWindowLongでスクロールバーを外せばいいのではなかろうか。
0947デフォルトの名無しさん
2009/10/01(木) 10:49:07TCustomGrid(StringGrid1).InvalidateRow
0948デフォルトの名無しさん
2009/10/01(木) 11:06:09それでもまだ抽象クラスなんちゃらってエラーでちゃいますぅ
0949デフォルトの名無しさん
2009/10/01(木) 11:07:37cg->InvalidateRow( 0 );
とかやってみたけどやっぱりアクセスできないってエラーがでます
0950デフォルトの名無しさん
2009/10/01(木) 11:23:320951デフォルトの名無しさん
2009/10/01(木) 11:32:090952デフォルトの名無しさん
2009/10/01(木) 11:50:060953デフォルトの名無しさん
2009/10/01(木) 12:19:23InvalidateRowはpublic関数じゃないのでクラス外からのアクセスは不可。
TStringGridを継承する新しいクラスを作成する。
//---------------------------------------------------------------------------
class THogeGrid : public TStringGrid
{
public:
__fastcall THogeGrid(TComponent* Owner):TStringGrid(Owner){};
void __fastcall InvalidateRow(int ARow){TStringGrid::InvalidateRow(ARow);};
};
//---------------------------------------------------------------------------
ただコンポーネントとして追加しない場合、コンポーネントの作成はユーザが行う必要があるのと
オブジェクトインスペクタが使えないので、プロパティ設定は初期化コードの中で行う。
これで、THogeGrid::InvalidateRowを外部から操作できる。
0954デフォルトの名無しさん
2009/10/01(木) 12:33:580955デフォルトの名無しさん
2009/10/01(木) 13:42:270956デフォルトの名無しさん
2009/10/01(木) 13:43:36それよりバージョン示せ
Delphi2010ではInvalidateRowが無いぞ
0957デフォルトの名無しさん
2009/10/01(木) 13:56:34C++Builder5 pro
とりあえずやりたい事は指定セル(行)のみの再描画なんですよこれが
普通にInvalidateだとセル全部にいっちゃうもんでチラつくんですよ
APIとかでもいいのないですかね?
0958デフォルトの名無しさん
2009/10/01(木) 18:06:02OwnerDrawにして、DrawCell関数でコントロールしたら
うまくいかないかなあ?
DefaultDrawingまでやめると大変だけど。
0959デフォルトの名無しさん
2009/10/01(木) 18:20:30DrawCellsイベントでセルに色つけたりしてるんですが
指定セルのDrawCellsイベントを呼びたいんですよね
0960デフォルトの名無しさん
2009/10/01(木) 18:22:34正常に表示されているのですが
ChartShapeを動的に作成してTextとFont->Colorを指定しても
フォントの色が黒になってしまいます。(Textの値は正常です)
これ実行時にはどうやってTextの色を指定したらいいですか?
0961デフォルトの名無しさん
2009/10/01(木) 18:48:13DrawCellならそもそもセル指定だしな
0962デフォルトの名無しさん
2009/10/01(木) 20:49:13最終的にはWin32APIのInvalidateRectを呼び出すことになるんだが、
そのために必要な座標計算はTCustomGridのInvalidateRowの内部で
やっていることをコンポーネントの外側で処理しなきゃいけないので面倒。
TCustomGrid.InvalidateRow -> TCustomGrid.InvalidateRect ->
TCustomGrid.GridRectToScreenRectという流れ。でもこの中で一番
スコープが外側なのはTCustomGrid.InvalidateRow(protected)なので、
TStringGridの派生クラスを作る、という>953が正解かも。Delphiなら
別解ありなんだが。
0963デフォルトの名無しさん
2009/10/01(木) 20:58:120964958
2009/10/01(木) 21:06:22元々、更新したCellだけ再描画されるばずだよ。
0965デフォルトの名無しさん
2009/10/02(金) 09:02:51void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(MyShapeSeries) delete MyShapeSeries;
MyShapeSeries=new TChartShape(Chart1);
MyShapeSeries->ParentChart=Chart1;
MyShapeSeries->HorizAxis=aBottomAxis;
MyShapeSeries->VertAxis=aBothVertAxis;
MyShapeSeries->Font->Color=clRed;
MyShapeSeries->Text->Add("Color");
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
if(MyShapeSeries) MyShapeSeries->Font->Color=clGreen;
}
0966デフォルトの名無しさん
2009/10/02(金) 09:59:00同じ事やっても変わらないからおかしいとおもって
色をclRedにしてみたら変わりました。
今まではclWhiteを指定したら白にならずに黒になってたもので・・・
何でこれ白はダメなんだろう・・・
ブラシとかぶったらダメなのかなあ
Transparent=trueにしてるからバックは関係ないかなっておもってるんだけど
とにかくありがとう
0967デフォルトの名無しさん
2009/10/02(金) 10:06:20っておもってたらやっぱ設計時も白は表示されてませんでした・・・
これclWhiteはダメだけどclWindowとかなら白になってるなあ
なにこれバグですか?
0968デフォルトの名無しさん
2009/10/02(金) 11:30:02MyShapeSeries->SeriesColor=clAqua; //clWhite以外を指定
これで白も表示されるはず。
0969デフォルトの名無しさん
2009/10/02(金) 11:43:46SeriesColorにclWhite以外を指定してFont->Color=clWhiteにしても黒になっちゃいました
まだ設計時でしかためしてませんが。
色々ありがとうございます
0970デフォルトの名無しさん
2009/10/02(金) 11:49:17TChartShapeに変数を追加したくて下記のようなクラスを作って
TChartShapeExを動的に作成してみたんですが・・・
class TChartShapeEx : TChartShape
{
public:
int Index; // コントロールインデックス(0〜n)
int Mode; // 操作モード*/
};
TChartShapeのプロパティーやメソッドにアクセスしようとしたら
アクセスできないってコンパイルエラーが出ます・・
かなりお馬鹿な質問ですが、こういう場合はどうやって記述したらいいですか?
0971デフォルトの名無しさん
2009/10/02(金) 21:12:04class TChartShapeEx : TChartShape
↓
class TChartShapeEx : public TChartShape
にしてみたら?
0972デフォルトの名無しさん
2009/10/05(月) 10:11:55あ、そっか・・・・
public 抜けてたんだ・・・
ありがとう・・・・
0973デフォルトの名無しさん
2009/10/05(月) 12:02:31TChartShapeの左上が原点になってしまいます。
これをTChartShapeの円の中心を原点にするにはどうしたらいいですか?
0974デフォルトの名無しさん
2009/10/05(月) 16:52:23設計時にCursorを変更しておくと実行しても指定したカーソルになっているのですが
プログラム中でたとえば何かボタンを押した時に
Chart1->Cursor = crCross;
とすると変わってくれません。
どうしたら変わってくれるんでしょうか?
0975デフォルトの名無しさん
2009/10/05(月) 18:44:52TChartで折れ線グラフを書いているのですが
その折れ線グラフのX軸値からY軸値を求める方法(メソッド)を教えて下さい・・・
0976デフォルトの名無しさん
2009/10/05(月) 19:41:310977デフォルトの名無しさん
2009/10/06(火) 18:48:560978デフォルトの名無しさん
2009/10/06(火) 22:24:510979デフォルトの名無しさん
2009/10/06(火) 23:43:40拡大や戻した時はどうするんですか?
Zoomとかのイベントで再計算ですか?
それはあまりにも悲しすぎて泣けてきました
0980デフォルトの名無しさん
2009/10/07(水) 00:11:41使うのが不適切な希ガス。何をしたいの?
0981デフォルトの名無しさん
2009/10/07(水) 10:00:39円の左上を基点としてるから30,30に書かれない
グラフは全て軸値を元に作成しているからシェイプだけピクセルで位置をずらして書くのは不合理
だからプロパティーで基点をシェイプの中心にするものがあるのかとおもって聞いてみたんですが
0982デフォルトの名無しさん
2009/10/07(水) 10:33:370983デフォルトの名無しさん
2009/10/07(水) 10:54:49シェイプじゃなくてポイントを使った方がいいですか
ちょっとそっちで試してみます
0984デフォルトの名無しさん
2009/10/07(水) 18:42:58TFastLineSeriesならSeriesColorで変更できますがTLineSeriesは変わりません
一旦消してサイドAddしあければダメでしょうか?
0985デフォルトの名無しさん
2009/10/07(水) 22:30:56procedure TForm1.FormShow(Sender: TObject);
var
I,X,Y: Integer;
begin
for I := 0 to 99 do
begin
X := I;
Y := I;
Chart1.SeriesList.Items[0].AddXY(X,y)
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Chart1.SeriesList.Items[0].Color := clBlue;
end;
Chart1にはTLineSeriesを1つ追加した状態で。
0986デフォルトの名無しさん
2009/10/07(水) 22:40:510987デフォルトの名無しさん
2009/10/07(水) 23:32:22あ、デルファイでも大丈夫です
すみません、明日試してみます。
ありがとうございます
0988デフォルトの名無しさん
2009/10/08(木) 10:17:11*.hを毎回読み込んでコンパイルしているみたいです。
ヘッダには関数の実体を書かずlibに関数の実体入れたら減らせるのはわかりますが。
調べたところ次の2点があると、プリコンパイル出来ないみたいです。
プリコンパイルではなくても、obj生成しておいて、それを使ってくれたら良いんですが。
ヘッダー内の関数にインラインでないものが含まれいる。 ヘッダー内にグローバル変数定義が含まれいる。
0989デフォルトの名無しさん
2009/10/08(木) 10:43:12シリーズリストからのアクセスだと動的に山ほどシリーズを追加しているので
リストの何番目かってのがいまいちわからないので直接作成した
LineSeriesでアクセスしたかったのですが、設計時にSeriesColorを変更すると
色が変わったので色々いじくってみたらどうやら
SeriesColorを変更する直前にColorEachPointをfalseにしてやると変わるみたいでした
予めColorEachPointにfalseを入れててもダメで色を変更する直前に
ColorEachPointを見てみてもfalseになってたので、何故か直前でfalseにしないとダメみたいでしたが・・・
0990デフォルトの名無しさん
2009/10/08(木) 11:05:43レス数が950を超えています。1000を超えると書き込みができなくなります。