312 :
デフォルトの名無しさん :
03/06/27 17:11 コンポーネントの新規作成で、TIBQueryを派生させて、 MyQuery->SQL->Text = "select * from ATABLE"; みたいなことすると、「Empty query.」という変なエラーがでます。 それも、MyQuery->SQLをTStrings*でdynamic_castしてもOKだし、 Strings->Clear(); Strings->Add(Ssql);とすると、Addで同エラー。 すげー変。
それも、同じソースの場所で、 TIBQueryを素で使って同じことをすると、何も起こりません。 みなさんも試してみて下さい。
コンポーネントの新規作成せずに、TIBQueryの空の派生、つまり名前を変えるだけの派生をすると、 newしているところで、 >[C++ エラー] : E2125 コンパイラは 'default constructor' クラスの を作成できない というような、エラーとなります。 コンストラクタが消える??? ちなみにBCB6でつ。
>>314 ソース追った結果が、TIBQuery->SQLの実態はTStrings*でつ。
また、dynamic_castでも、それが正しいという結果です。
VCLの中をデバッグしようとすると、汗画面に飛びます。
>>316 ソース見ると、OnChangeに代入してるQueryChangedが呼ばれてるはずということもわかるね
>>315 親が引数をとるコンストラクタしか持ってないから、
派生したクラスでコンストラクタを省略することは出来ないよ。
>>318 はつみみですた。
>>317 確かに、
>TStringList(SQL).OnChange := QueryChanged;
こういう行ありますね。
ウワーン何が起こってるのか分からないYO〜
>>319 だからTStringListはOnChangeにコールバックが設定されていると
内容の変更があったときにそれを呼んでくれるの。
だからエラーはそのコールバック(設定されているTIBQuery.QueryChanged)の
中で起きてるんでしょう。
ってその中でブレークポイントとかって設定できないんだっけ?
<BCBは最近使ってないのでスマソ
>>320 プロジェクトオプションのリンカタブで
デバッグライブラリを使う(D)
をチェックしとけばデバッガで中を追えるはずか。
VCLデバッグはしてますが、ブレイクポイント無いと、汗画面でした。 >procedure TIBQuery.QueryChanged(Sender: TObject); >var > List: TParams; >begin > if not (csReading in ComponentState) then > begin > Disconnect; ここでエラー起こしてます。 Disconnectなんてされても困るな...
もう一つ分からないのが、派生前と派生後(名前変えただけ...)で動作が違うのは???
どう違うの
>>324 派生しない場合も、Disconnectの中に入ってました。
で、派生後クラスのDisconnectの中に入ると、
>function TIBCustomDataSet.PSGetTableName: string;
>begin
>// if not FInternalPrepared then
>// InternalPrepare;
> { It is possible for the FQSelectSQL to be unprepared
> with FInternalPreprepared being true (see DoBeforeTransactionEnd).
> So check the Prepared of the SelectSQL instead }
> if not FQSelect.Prepared then
> FQSelect.Prepare;
ここに飛んで落ちます。
それも、F7を押した瞬間、Disconnectメソッドに飛ばずに、 「TIBCustomDataSet.PSGetTableName」に入るので、???です。
327 :
デフォルトの名無しさん :03/06/28 04:58
これインストールしたときなんか向こうの鯖にアクセスしてたんだけど、これってXPのアクティベーションみたいなやつ? 一本のソフトで複数のコンピュータに入れることは出来ないの?
329 :
デフォルトの名無しさん :03/06/28 20:23
OleVariant() ってもしかしてやばい? MSComm取り込んで、MSComm->Output=OelVariant(AnsiString hoge); とかやると、リークしまくるのだが。
330 :
デフォルトの名無しさん :03/06/28 21:52
C++Builder6で使用している Direct X のバージョンは? ボーランドのサイトではC++Builder3までしか書いてないので教えてください。
最初から入ってるのは7.0かな。
新たにDirectXSDKをインストールしなくてもプログラムをコンパイルできるのはってことでした。
>>333 ありがとう。
ibquery.pasで、 >TStringList(SQL).OnChange := QueryChanged; こんなキャストがあるけど、これって大丈夫なのかな?
>>335 FSQLを設定する部分でしっかりTStringListしか入れないようにさえなってれば
大丈夫でしょ。
その通りでした。
>>336 >FSQL := TStringList.Create;
になってますね。
ところで、
>constructor TIBQuery.Create(AOwner: TComponent);
を派生した場合は、派生したメソッドで
TIBQuery::Create
をコールする必要とかありましたっけ?
BCBからVCL派生はやっぱ慣れないと分からない部分とかありますよね。
必要というか、親のコンストラクタは、初期化リストで呼んでるでそ?
じゃ、不要ですか。
>>338 「派生前と派生後(名前変えただけ...)で動作が違う」原因が分からないと、気持ち悪いよ。
というか、開発進むと行き詰まりそう。
は? 引数付きのコンストラクタは初期化リストでしか呼べないし、 引数付きのコンストラクタしかないクラスから派生したクラスは、 初期化リストで初期化しなきゃエラーだろ。 動作が違うとしたら「デフォルトコンストラクタが呼ばれてる」だけだから。
あ、読み間違えちゃった。
>>338 >>340 つまり、派生後のコンストラクタで、
TIBQuery::Create(AOwner: TComponent);
をコールすれば良い?
まず、「初期化リスト」という単語を知っている? だいたい、ObjectPascalのコンストラクタは C++から通常の関数のように明示的にCreateで呼び出せるの? delphiでもinherited使うしかないんじゃなかった?
仮に呼び出せたとしても、 「デフォルトコンストラクタ」と「引数付きコンストラクタ」の両方を呼び出して 正常に動くとはとても思えないけど。
>>342-343 Delphiのinheritedを行うために、「TIBQuery::TIBQuery(Owner);」と書くのかな、
と思ってたんだけど違うの?
実行させても動作しないから違うみたいだね...
__fastcall TMyQuery::TMyQuery(TComponent* owner) : TIBQuery(owner)
{
}
こうなってれば他に特に何もしなくていいということでそ。
>>325 の動作が違うって件は、わからないけど。
346 :
デフォルトの名無しさん :03/06/30 18:15
Visual C++とBCBってどれくらい違うの?
347 :
デフォルトの名無しさん :03/06/30 18:53
Borland C++ Builder 6.0 のランタイムをインストールしないでも動くようなexeファイルって作れない? 無理?
>>346 VC=C++ Onlyで開発できる。
BCB=Pascalが必要な上にC++と互換性がない拡張がなされている。
349 :
デフォルトの名無しさん :03/06/30 18:55
じゃあVC使えばいい
>>348 VC =C++ Onlyでしか開発できない。Visualという名前に負けている。
BCB=C++のみでも可能だが、DelphiのVCLを利用してVisualにGUI開発が出来る
353 :
デフォルトの名無しさん :03/06/30 19:59
354 :
デフォルトの名無しさん :03/06/30 20:00
>>353 ヘルプで パッケージ のキーワードのところを順に見てけばそのうち判ると思うよ
>>353 プロジェクトオプションを開く
リンカタブの「共有 RTL DLL を使う」のチェックを外す
パッケージタブの「実行時パッケージを使って構築」のチェックを外す
357 :
デフォルトの名無しさん :03/06/30 20:14
>>355 thanks
>>356 どうもありがとうっ!
ファイルサイズかなりでかくなったけど出来たよ
358 :
デフォルトの名無しさん :03/07/01 09:34
>354 じゃあBCB使えばいい
度々すみませんが、「派生前と派生後(名前変えただけ...)で動作が違う」原因というかバグを把握しないと、コンパイラとして不安があるなと思ってます。 BCBオタの皆さんも312の内容を試してみて頂けないでしょうか?
>>359 >BCBオタの皆さん
こんな書き方すると荒らし扱いされるぞ
気をつけな
InterBaseインストールしてないや
リソースファイル(*.rc)にBMP以外の画像を埋め込みたいんですが なぜか成功しませぬ。 [sample.rc] RC_TITLE001 BITMAP "title.bmp" RC_CHAR001 PNG "stand001_all.png" RC_BM001_1 JPEG "back_test0_big.jpg" ファイル名を直接指定した場合は描画できるんですけど リソースIDでやった場合、BMP以外は描画不能。 ユーザに直接画像を覗かれない方法があったら教えてママン(´・ω・`)
[sample.rc] JPEG1 JPEG "test.jpg" TResourceStream* stream = new TResourceStream((int)HInstance, "JPEG1", "JPEG"); TJPEGImage* jpeg = new TJPEGImage(); jpeg->LoadFromStream(stream); で出来たど
TTreeViewでWindowsのヘルプみたいに展開されてるかされてないかでノードに表示されてるイメージを変えるにはどうすればいいの?
StateImages設定して、OnCollapsedやOnExpandedでStateIndexを変えるとか
>>364
>>365 ありがとう。やっぱり設計時のプロパティだけじゃ無理なのか。
イベントハンドラをかいてその中で自分で設定するわけね。
367 :
デフォルトの名無しさん :03/07/01 14:23
TDateTimePicker について質問があります。 二つのTDateTimePicker(Dtp1,Dtp2) を用意してformのcreateかなんかでそれぞれ、2003/06/27、2003/06/30と しておきます。 この二つのTDate値を比較するときに、両方のTDateTimePickerの内容をUI上で変更すれば、きちんと比較できるのですが、 片方だけ(Dtp1)2003/06/27 を 2003/06/30 にして、比較(Dtp1->Date <= Dtp2->Date)すると、同じ値なのに(Valも同じ)、この式がfalseを返します。 Dtp2をもういちど、2003/06/30 に選びなおすと比較できます。 わかりにくくてすいませんが、どなたか解決法ご存知でしたら教えていただけませんか?
>>363 thx!
フリーのライブラリを覗いたらリソースIDをそのままCreateFile()に
用いてたのが原因ですた(´・ω・`)
bool LDImg(const char* fileName){
HANDLE hFile;
if(strchr(fileName,'.') == NULL)
{ //リソースIDから指定
/*
リソース経由でCreateFileさせる方法募集(´・ω・`)ノ
GetModuleFileName()?
*/
}else{//ファイル名を直接指定
hFile = CreateFile(
fileName, GENERIC_READ,FILE_SHARE_READ,NULL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
}
//以下、ファイルリード処理
}
>>367 再現しないな。
> formのcreateかなんかでそれぞれ、2003/06/27、2003/06/30としておきます。
> 片方だけ(Dtp1)2003/06/27 を 2003/06/30 にして
この時、どういうコードで日付変更してる?
371 :
デフォルトの名無しさん :03/07/01 16:12
>>370 再現しないですかあ。
>この時、どういうコードで日付変更してる?
Dtp->Date=Now()-1; //昨日
Dtp->Date=Now()-7;//一週間前
って感じです。まずいですか?
372 :
デフォルトの名無しさん :03/07/01 16:16
Dtp1->Date=Now()-1; //昨日 Dtp2->Date=Now()-7;//一週間前 でした
373 :
デフォルトの名無しさん :03/07/01 16:19
>>370 Delphi5だと正常に動きます・・・。
TDateってTDateTimeをtypedefしただけで、時間も保持してるみたいだから、
時間部分の差で
>>367 みたいなことになったんでない?
EncodeDate使ったり、
Dtp1->Date = (int)Now() - 1;
Dtp2->Date = (int)Now() - 7;
ってやれば大丈夫だと思う。
う、ごめん嘘書いたみたい。カレンダーから日付取得すると、少し時間がずれてる。 比較するときに、(int)Dtp1->Date == (int)Dtp2->Date か。
>>374 ありがとうございました。(int)で動きました。
ただよくわからないのが、Valの値(少数点(時間)付)も同じだったし、Delphi5では動いたことです・・・。
377 :
デフォルトの名無しさん :03/07/01 16:49
6j pro をインストールしたんですが、使用許可のオンライン認証ってやらないと何か不都合はあるんでしょうか もし認証をしないで済む方法、パッチなんかがあれば教えてください
>>375 設定するときと比較するとき、両方に(int)しときました。
ありがとうございました。
>>377 オンライン認証が苦手だな、という方は、「使用許諾コード取得フォーム」に
記載の上、ファクシミリにてボーランド株式会社インフォメーションサービスセンター
使用許諾コードお問い合わせ係 まで送ってください。
>>377 あなたは認証をやると何か不都合があるのでしょうか
377ではないが、今まで買ったソフトを、一本たりとも登録した事が無い。 VS6に付いてたMSDNの無償ライセンス申し込みの期限が切れたことに 気づいた時は、さすがに嫌な気分になったが。
383 :
デフォルトの名無しさん :03/07/02 20:31
ネットに繋いでないPCにインスコする人のことも考えてほしいな Winnyで出回ってるクラックパッチは怖くて実行出来んし
>>383 ネットに繋がなくても認証できるから大丈夫。
割れは恐いな。SPでどうなるかわからん。
というわけで必要なヤツは買え。
385 :
デフォルトの名無しさん :03/07/03 09:09
>>383 だから
>>379 の言ってるFAX認証があるのだが、何か不満か?
今時FAXが無いわけでもあるまい?
386 :
デフォルトの名無しさん :03/07/03 11:08
>>385 FAXなんかもってねーよ。必要ないし。
最近なら固定電話すら置いていない人もいるだろ。
割 れ 厨 必 死 だ な ( w
389 :
デフォルトの名無しさん :03/07/03 12:43
スルーか。まあいいや。 しかし興味深い・・・送った後にどうやって認証するんだろう。コンビニから送ったんじゃFAXを受けることはできないはずだし。
20分しか経ってないのに(w よっぽどかじりついてんだな。
>>389 製品を買った方のみ、わかります。
すなおに買うことをお薦めいたします。
状況かいときゃ、封書ででも来るのだろう。
>>391 そうね
>>392 こんなことを確認するためだけに買うなんてばからしいからやめておく。
C++コンパイラならVC++があるし。
>>393 郵送か・・・なるほど。FAX送ってから届くまで時間がかかるけど他に方法がないんじゃしかたないよね。
ありがとう。
低質な釣り師だったな ↓ はい、次の方
396 :
デフォルトの名無しさん :03/07/03 14:37
6j pro をインストールしたんですが、使用許可のオンライン認証ってやらないと何か不都合はあるんでしょうか もし認証をしないで済む方法、パッチなんかがあれば教えてください
↓ はい、次の方
399 :
fopen :03/07/03 15:11
fopen で3.7ギガのファイルを読もうとすると、 fp = fopen( file_path, "r+b" ) fpにnullが入りうまくいかないのですが、どうにかならないでしょうか? 当然、小さいファイルは読めます。
>>396 アスタラへ逝け
Delphi用で(ry ゴホッ、ゴホッ・・・
プログラムを実行させると次のようなエラーが出ます。 [C++エラー]E2075 Project override オプションの間違い どうしても分かりません。
低質な釣り師だったな ↓ はい、次の方
有れば開く、無ければ作る。他のアプリから読み取りは許可する。 他のアプリが開いていても書き込める。 こんな便利なTFileSteamコンストラクタの引数は、ヘルプにのってる定数の組み合わせ(||) で出来るんでしょうか。
無理だな
そうか。じゃあなんで動くんだろ。
ぜってー無理。
ボタンがクリックされたらラベルの表示を替えるプログラムで void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption.printf( "%d, %d", 100, 100 ); } だと何も代わりません。 void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString str; str.printf( "%d, %d", 100, 100 ); Label1->Caption = str; } とするとちゃんと表示されるんだけど。何故?
__property AnsiString Caption = {read=GetText, write=SetText... なので、 Label1->Caption.printf(... は、 Label1->GetText().printf(... といふうに置き換わるから。
>>409 どうもありがとう。
まだBC++Builder始めたばっかりでプロパティの仕組みはおぼろげなんだが
GetText()が返すのはいわゆる一時的なオブジェクトでラベルの保持してる文字列ではないのかな。
とにかくCaptionの値を変えるのは代入しかないわけね。
411 :
デフォルトの名無しさん :03/07/04 15:28
MDI アプリケーションで、親フォームの閉じるボタン (フォーム右上の×ボタン) が押されたっていうイベントを、 子フォームよりも先に親フォームで捕まえる方法ってありますか?
親フォームのCloseQueryをオーバーライドして、 bool __fastcall TMainForm::CloseQuery(void) { // 子フォームのCloseQueryが呼ばれる前にしたい処理 // : return TForm::CloseQuery(); } とか。あとWM_CLOSEがきた時点で処理するとか。
413 :
デフォルトの名無しさん :03/07/04 16:24
TDateTimeにtime_tはどうやったら入りますか? time_t a; TDateTime DateTime = a; みたいな感じで。
これでできるっぽい dateTime = a/(60*60*24.0) + UnixDateDelta + 9/24.0;
418 :
デフォルトの名無しさん :03/07/04 20:31
>>377 ですけど、結局今日6jパーソナル買ったよ
っていうか買うの3以来。
あれから3回もバージョンアップしたのか・・・
数値計算を勉強したいのですがbuilderでBlitz++を使うにはどうしたら言いのですか? 最初にソースをコンパイルしてライブラリを作らなくちゃいけないみたいなんですけどできません。。 ./configure --with-cxx=[compiler] とか何とかUNIXのシェルかなんかで実行するのなんて分けわかりません。 コマンドラインでコンパイルしたことないのでMakeとかもわかりません。 だれかコンパイルしてBC++用のライブラリ作った人いませんか。
ライブラリの作り方はわかないけど、もともとテンプレート使ってほとんどヘッダファイルに書かれてるので ライブラリなんか作らなくてもヘッダさえインクルードすれば最初の方の例がコンパイルできるようになりました。 420さん、ありがとう。 あとはゆっくり勉強して不都合がおきればまた調べます。
>423 適当に作ってみた。 ヘッダ class PACKAGE TListView1 : public TListView { private: TEdit *Cap; TListItem * ChangeItem; int ChangeSubIndex; void __fastcall CapKeyPress(TObject *Sender, char &Key); protected: DYNAMIC void __fastcall MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y); public: __fastcall TListView1(TComponent* Owner); __fastcall ~TListView1(void); __published: }; //---------------------------------------------------------------------------
実装 コンストラクタとデストラクタ __fastcall TListView1::TListView1(TComponent* Owner) : TListView(Owner) { Cap = new TEdit(this); Cap->Parent = this; Cap->OnKeyPress = CapKeyPress; Cap->Visible = false; } //--------------------------------------------------------------------------- __fastcall TListView1::~TListView1(void) { delete Cap; } //---------------------------------------------------------------------------
void __fastcall TListView1::MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y) { //アイテムを求める ChangeItem = GetItemAt(X, Y); if (ChangeItem == NULL || Cap->Visible == true) return; //サブアイテムを求める int pos = 0; for (int i = 0; i < this->Columns->Count; i++){ pos += this->Columns->Items[i]->Width; if (pos > X){ pos -= this->Columns->Items[i]->Width; ChangeSubIndex = i - 1; break; } } //サブアイテム位置でなければエディット表示は行わない if (ChangeSubIndex < 0) return; //Edit Cap->Visible = true; Cap->Left = pos; Cap->Top = ChangeItem->Top; Cap->Text = ChangeItem->SubItems->Strings[ChangeSubIndex]; Cap->SetFocus(); }
//エディットのキー操作 void __fastcall TListView1::CapKeyPress(TObject *Sender, char &Key) { if (Cap->Visible == true && Key == VK_RETURN){ ChangeItem->SubItems->Strings[ChangeSubIndex] = Cap->Text; Cap->Visible = false; } } //--------------------------------------------------------------------------- あとは勝手に改造してください。
あ、vsReportで、RowSelectはtrueにしておいてね。
……見返したら許せないバグがあるんで、訂正スマソ。 //アイテムを求める ChangeItem = GetItemAt(X, Y); if (ChangeItem == NULL || Cap->Visible == true) return; のところ、 if (Cap->Visible == true) return;はGetItemの前にやらないと ChangeItemが変わっちゃうんで駄目です。
>>431 再度どうもです。
コンポ作っていろいろやってます…
マウスのホイールやメニューのクリックでフォーカス外したりするのが必要なので
いろいろ調べつつ頑張ってみます
professional版以上についてるCodeGuardてべんりですか? メモリリークがあると簡単にわかる? どんな型のどのくらいのメモリがリークしたかとかわかるの?
434 :
デフォルトの名無しさん :03/07/07 21:29
プログラミングとは全然関係ないんですが、 一応、BCBでおこったことなので、書き込みます。 2,3ヶ月前に、BCBを使おうと思って起動させたら、 なんか、ゴジラの鳴き声 『ギャォォォォン!』 と言うのがして、ビックリして画面見たら、 いつものスプラッシュウインドウではなく どっかのイラストレーターが書いたようなゴジラの絵の スプラッシュウインドウが出てきました。 一体コレはなんだったのでしょうか? ネタじゃなくマジです。 あまりにビックリしすぎて、スクリーンショットを取り損ねてしまいました。
BCBのIDEみたいな、ドッキングフォームを作りたいです。 プロパティのDock関係をいじってみたんですが、 エディタ部を固定したままにすると、ドッキングされたフォームが エディタに重なってしまい、エディタが使えない状態になってしまいます。 よろしくおねがいしまs
436 :
デフォルトの名無しさん :03/07/07 22:52
Buttonを押してImageへEditに書いた文字列を表示させるという事がしたくて void __fastcall TForm1::Button1Click(TObject *Sender) { char i[32]; strcpy(i, Edit1->Text); Image1->Canvas->TextOut(0, 0, i); } と記述したら 'AnsiString' 型は 'const char *' 型に変換できないと表示されました。 Strからcharに変換する方法か、 もっと簡単にEdit1->Textの文字列を代入する方法ありませんか?
ageてすいません。 よろしくお願いします。
Image1->Canvas->TextOut(0, 0, Edit1->Text); 質問でageても誰も文句言わん。
char配列へのコピーを一応。 strcpy(buffer, Edit1->Text.c_str());
440 :
デフォルトの名無しさん :03/07/07 23:29
だれか434の件について答えてくれ
>>440 >一応、BCBでおこったことなので
Windowsで起こった事だ
CtrlとShift押しながらBCB起動しろ
>>438 >>439 そのままTextOutに書いてよかったんですね。
わざわざchar配列へのコピーまで教えて頂きありがとうございました。
>>434 それ、Borzillaだな、幸運な奴だ
どうやったらそれが出るのか漏れは未だにわからん
リソースに入ってるので、リソースハッカー等で取り出せはしたのだが・・・・
>>442 神!
出ました。有り難うございます。
今までウイルスか何かかなぁと思っていたんで、
安心しました。
普通に起動して出たのって凄い確率なんでしょうね。
>>442 これってBorlandの社員の集合写真か?
>>442 その方法で出ないぞ
BCB6J UPD#4は違うのか?
出たり出なかったりする
>>448 さんきゅ
未だ成功せず
リソース見てみたら集合写真はあるけど、Borzilla.wavが無い!?
本体ではなく他のに入ってるのか捜索開始します
Formを2つ作成し、Form1を上下左右に動かすと Form2も連動し上下左右に動かす方法はないですか? Formのイベントとか見てもそのようなものないし・・・。 宜しくお願い致します。
451 :
デフォルトの名無しさん :03/07/08 14:03
ある
454 :
デフォルトの名無しさん :03/07/08 17:37
MDIアプリのいいサンプルありませんか? 一応探してみたんですが、無かったので
int i=100; AnsiString buff; buff.sprintf("Value:%d",i); これが通って int i=100; AnsiString buff.sprintf("Value:%d",i); これが通らない。なんで?
いけね。名前そのままにしてた。
>>455 初期化でメンバ関数呼んで普通通ると思うか?
ふーん、そういうもんなんですか。
461 :
デフォルトの名無しさん :03/07/08 19:33
C#Builderとは。 C++Builder7はまだ発売されないの? もうすぐ金入るからBuilder6のProfessional買おうか迷ってるけど買ってすぐ7がでたらやだなー。
463 :
デフォルトの名無しさん :03/07/08 20:29
MDIアプリのいいサンプルありませんか? 一応探してみたんですが、無かったので
本買え
465 :
デフォルトの名無しさん :03/07/08 20:33
どの本に載っていますか どこで買えますか
新規作成→その他→プロジェクト→MDIアプリケーション の奴でいいだろ。
>>433 CodeGuard便利っすよ。
メモリーリークの他にも危険な操作も検出してくれるようです。
>>467 ありがとう!
プロフェッショナル版を買おうか迷ってたけど買おうとおもいます。
469 :
デフォルトの名無しさん :03/07/09 11:36
フォームのBorder StyleをbsNoneにしてフォームの タイトルバーを消した状態でフォームの大きさを従来通りマウスで 変えたいのですが、どうすればいいのでしょうか?
>>469 "WM_NCHITTEST" と「リサイズ」でぐぐれ。
ところで、枠が無い状態でどこを掴んだときにリサイズさせたいの?
471 :
デフォルトの名無しさん :03/07/09 14:11
>>470 ウィンドウの端にマウスをもってくと枠がある時と
同様な操作がしたいもので
472 :
デフォルトの名無しさん :03/07/09 14:19
あ、ダメだ・・ ググっても発見できない
475 :
デフォルトの名無しさん :03/07/09 18:19
>>473 できました!
しかし今度はMouseDownイベントが発生しなくなってしまいました・・
WM_NCHITTESTメッセージを処理した後にデフォルトの処理を
走らせるにはどうしたらいいのでしょうか?
TForm::Dispatch(&msg); でもこの場合、処理した後じゃなくて前に呼ぶ。 (後に呼ぶと自分で設定したmsg.Resultが、デフォルトの処理で書き換えられるので)
477 :
デフォルトの名無しさん :03/07/09 18:54
すいません。 変な例えですが、TStringListの様なクラスを配列で利用したいんですが、 初期化はどのようにしたらいいんでしょうか? ヘッダに TStringList *strlist[100]; とすると、初期化は? strlist[]=new TStringList; じゃダメですよね。
>>477 試してないけど、固定長配列でいいなら、
int i;
TStringList *strlist[100];
// 確保のコード
for( i = 0 ; i < 100 ; i++)
strlist[i] = new TStringList;
// 解放のコード
for( i = 0 ; i < 100 ; i++)
delete strlist[i];
じゃないかな?
ごめんなさい。
やりたかったことは、TListを使うとうまく行きました。
>>478 やっぱりその方法が一番手っ取り早いみたいですね。
もう使わないけど。
アスペルガー
アスベスト
482 :
デフォルトの名無しさん :03/07/09 23:49
Unit1.h −−− ここから class TForm1 : public TForm { __published: // IDE 管理のコンポーネント TMemo *Memo1; void __fastcall FormShow(TObject *Sender); private: // ユーザー宣言 void __fastcall WMDropFiles(TWMDropFiles Msg); //←追加 public: // ユーザー宣言 __fastcall TForm1(TComponent* Owner); BEGIN_MESSAGE_MAP //←追加 MESSAGE_HANDLER(WM_DROPFILES,TWMDropFiles,WMDropFiles) //←追加 END_MESSAGE_MAP(TForm) //←追加 }; −−− ここまで Unit1.cpp −−− ここから #include <ShellAPI.h> //DragAcceptFiles() //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { DragAcceptFiles(Handle,true); //Drag&Drop許可 }
483 :
デフォルトの名無しさん :03/07/09 23:58
↑はフォームにファイルをドロップするとWMDropFilesが呼び出されるプログラムです DragAcceptFiles(Handle,true); では正常に処理されるのですが、たとえば DragAcceptFiles(Button->Handle,true); として、ボタンにドロップしてもWMDropFiles内に書いた処理をしてくれません MLなんかにはここを変えるだけでいいようなことが書いてあるのですが、 何か他にしなければいけないことがあるんでしょうか
484 :
買ってきたばっか :03/07/10 00:13
Borland C++ 6.0 Personalで 簡単なフォームを作って実行させたところ [リンカ 致命的エラー] Fatal: ファイル名が必要 : わかんないっすTT
>>483 WM_DROPFILESはButtonに送られるんだから、
Buttonをサブクラス化するとか、TApplication::OnMessageでWM_DROPFILESを捕らえて処理しないと。
>>484 漏れもなったことがある。
フォームにボタン一個貼っただけなのに、保存してからコンパイルしようとすると
[リンカ 致命的エラー]が出たり。
再インスコしたら直ったけど
>484 原因不明のエラーに対する自分なりの手順。 1)全て保存してやり直す 2)すべてのプロジェクトを再構築してやり直す 3)Builderを一度終了させてやり直す 4)OS再起動させてやり直す 個人的な経験では、再構築で直ること多し。 再インストールはやったことないな。。。
>>487 漏れの場合はそれ全部やってもダメだった。
んで再インスコ
489 :
買ってきたばっか :03/07/10 01:54
>488 再インスコでなおった@@; アリガトン^^
C#Buidlerってどうなの?
491 :
デフォルトの名無しさん :03/07/10 07:34
SYOTI_F( char * ) test_time SYORI_P(( const time_t *tp, char *buf )); とGCCで書いてあるヘッダをC++Builderでコンパイルすると [C++ エラー] test.h(38): E2293 ) が必要 となってエラーとなる...const が悪い?? ていうかこの部分が何を示しているのか良くわかってない^^; C++Builderだとどうすれば良いのでしょうか?
test.hが必要ってエラーでてるじゃん
493 :
デフォルトの名無しさん :03/07/10 07:46
>>492 test.h 内で)が必要という意味みたいです^^;
SYOTI_FやらSYORI_Pっていあマクロらしきもののの中身さらさんとわからん
496 :
デフォルトの名無しさん :03/07/10 08:00
>>494 typedef int SYORI_P_rewrite SYORI_P(( void *ln, unsigned lnf));
SYORI_Pはこんな感じです。
#define SYOTI_F(type)extern type
となっています。
中身は必要ですか?
絶対SYORI_Pが違う。 #define SYORI_P(x) x みたいになってるはず。
498 :
デフォルトの名無しさん :03/07/10 08:20
>>497 typedef int SYORI_P_rewrite SYORI_P(( void *ln, unsigned lnf));
では定義は不可能という事ですか?
おそらく >typedef int SYORI_P_rewrite SYORI_P(( void *ln, unsigned lnf)); これはSYORI_Pのtypedefではなく_rewriteのでは。 そしてSYORI_Pはマクロです。 #define SYORI_P(PAR) (anyfunc)PAR こんな感じ
>#define SYORI_P(PAR) (anyfunc)PAR これちがうは
#define SYORI_P(PAR) (returntype(*)PAR) こんなんかな
502 :
デフォルトの名無しさん :03/07/10 09:04
>>499 それがないんですよね〜
SYORI_Pはヘッダファイルのみの使用なんですが
いくら検索かけてもないんですよね
typedef int SYORI_P_rewrite SYORI_P(( void *ln, unsigned lnf));
は理論上成り立つのかなと...SYORI_P_rewrite の別名定義ですよね..
これって,,どうなんでしょw
いや、だから、UNIX系のソースによく見られる _P(...)マクロと一緒でしょ。
プロトタイプが有効なときには展開され、無効(古いコンパイラ)なときには空白にするっての。
だから
>>497 。
たぶん、config.hとかで #ifdef ???? #define SYORI_P(arg) arg #else #define SYORI_P(arg) /* */ #endif みたいになってると思うけど。
506 :
デフォルトの名無しさん :03/07/10 09:16
ありました... #define SYORI_P(proc)proc って感じですが..
507 :
デフォルトの名無しさん :03/07/10 09:27
説明はなしですか..ww
503に書いた内容じゃ不服か?
509 :
デフォルトの名無しさん :03/07/10 09:51
問題は SYOTI_F( char * ) test_time SYORI_P(( const time_t *tp, char *buf )); マクロとマクロに囲まれたtest_time が何者か分からないわけで.. とGCCで書いてあるヘッダをC++Builderでコンパイルすると [C++ エラー] test.h(38): E2293 ) が必要 このエラーがなぜ発生するのか分からないわけで.. よろ..
自分で理解できないからって、、 >えっと別スレで聞いたのですが説明なしで自己満足で終わられたみ >たいなのでこのスレに投げます。 すげーむかついたから、勝手にやってくれ。
そのソースが使われてるとこにあるライプラリなどから呼び込んでるかと
プ。じゃなっかた。ブだ。
513 :
デフォルトの名無しさん :03/07/10 10:01
分かっている事ばかり答えてもらってもしかたなか(-.-)
514 :
デフォルトの名無しさん :03/07/10 10:02
答えるだけ答えさせておいて バカにして終わりww 自己満足の境地www
定義されているのがtest.h内なら#ifdefの条件をdefineする config.hならincludeする。 この程度が解決できないようじゃ、 どうせ他のところでもエラーが出て解決できないだろうがね。 >分かっている事ばかり答えてもらってもしかたなか(-.-)
516 :
デフォルトの名無しさん :03/07/10 10:03
答えるつもりがないのだったら 時間の無駄だからこのスレにでてこないでください
517 :
デフォルトの名無しさん :03/07/10 10:04
>>515 あのね その程度でつまってるんだったら聞かないでしょって
いってるのに!
518 :
デフォルトの名無しさん :03/07/10 10:05
みなさん、そんなに興奮しないで下さい... 質問のレベルが高すぎたのかなあ...ww
521 :
デフォルトの名無しさん :03/07/10 10:14
>>520 koreigai naniga aruno?
質問に散々こたえたでしょw
522 :
デフォルトの名無しさん :03/07/10 10:52
デスクトップにあるアイコンより下にフォームを表示する方法を教えて
TListに独自のクラスをAddで追加したんですが その追加したクラスを取り出すとき、void*型を独自クラスの形式に変換することが出来ません。 独自のクラスに変換するにはポインタを解析して行くしかないのでしょうか?
>>524 "キャスト"という言葉はご存じですか?
526 :
デフォルトの名無しさん :03/07/10 13:08
>>524 クラスやコンポーネントは実際はポインタだから、普通にキャストできると思うが。
var
List:TList;
p:TForm1;
begin
List:=TList.Create;
List.Add(Form1);
p:=TForm1(List.Items[0]);
List.Free;
ShowMessage(p.Name);
end;
TStringList *StrList=new TStringList; StrList->Add("abcdef"); delete StrList; TList *List=new TList(); List->Add(StrList) //↑の変数はPublic属性 TStringList* sl=new TStringList; sl=(TStringList)List->Items[0]; ShowMessage(sl->Strings[0]); delete sl; delete List; これでキャスト出来ないんだけど、ドコが悪いの?
あっ!間違えた。 StrList->Add("abcdef"); //delete StrList;
sl=(TStringList*)List->Items[0]; こうだよん。
それやると、メッセージ表示される前に フリーズしちゃうんですが…
TStringList* sl;
あー! List->Addしたあと、delete StrListしてました。 お手数おかけしました。
ところで、何回も同じ変数でnewしても、 その回数だけdeleteする必要ってないんですか?
534 :
デフォルトの名無しさん :03/07/10 16:47
VCLとCLXの条件コンパイルはどうやってますか?
今までパーソナルだったけど気に入ったからProfessional版買ってきてインストールしたけど 起動が滅茶苦茶遅くなった。ペンティアムVの733ヘルツだと重いのかな。
要らないパッケージ外したら速くなるよ。それでも重いこた重いけどナー
>>536 パッケージが原因なんですか。
そういえばパーソナル版使ってるときに本やWeb上のサンプルをコンパイルしようとしたら
パッケージがないとか言ってコンパイルできないことが多かったよ。
あれはプロフェッショナル版の人が作ってたんですな。
まあ実行時パッケージを使って構築のチェックを外せばだいたいコンパイルできたけど。
でもたくさんコンポーネントが増えてうれしい。
ログが表示できたりCodeGuardが使えたりしてデバッグもぐっと楽になるだろうし。
秋葉原に買いに行ったらVC++.Netの2002年版のやつとVS.Net2003Professionl限定アップグレード版をセットで買うと
5万弱で買えるってお勧めの商品になってて迷ったけどこれでよかったんだよね、多分??
でも1万円以上高いのはちょっと痛いな。あっちはC++とC#とVBもついてるし。
538 :
デフォルトの名無しさん :03/07/11 07:15
今、悩んでいるのだけど これからc++を始める人にとっては「c++builder」と「visual c++」の どちらを選択すべきであろうか。 自分の中では「visual c++」がメジャーと思っていたので他の選択肢を考えていなかった。 「visual c++」の方が本や情報など探しやすい気がする反面で 「c++builder」を勧める人の方が多い気がもする。 先輩方のアドバイスを求む。
>>538 取り敢えず、このスレの主旨から言って、やはりBCBではないかと
ちなみに、VCのスレで聞かれたらVCを進める
理由は
>>538 だけじゃ、何に使うか分からんし
使い方によっては、gnuで充分だったりするので
聞かれる気もしていたのですがあえて明記しませんでした。 まずはフリーソフトみたいな物を作りたいです。 考えているのはHP巡回ソフトの「WWWC」みたいなソフトです。 おそらくこれが完成するのにかなりの時間がかかるでしょう。 その後はDirectX関係を勉強してゲームもどきみたいな物を制作したいです。 単にキャラクターをパッドで操作できるだけの簡単な物でいいです。 こんな予定があるのですがどっちのc++がよいですかね?
まず、無料のコンパイラをDLしてC/C++というものをある程度理解して それからWindowsなりネットワークなりだな。
同系ソフトにVCL製の WWWDってのもあります。 情報をたくさん集めて判断すると より後悔しない選択が出来るんじゃないかな。
そうだな。 フリーの環境 BCC55/Delphi/Java落としていろいろやってみてから 有償のものを買えばいい。 よく、お金出した方が真剣になるからなんて言い方する奴がいるが、 そんなものは幻想だ。
544 :
デフォルトの名無しさん :03/07/11 17:15
coutやcerrに出力してるソースがありますが、 それらを標準入出力でなく、TMemoとかに出したいでつ。 BCBで出来ますか?
というか、 「cout << "Hello world." << endl;」 が、どこにも表示されません。 いったいどこに出力されてるのだろう?
それは君の心の中にあるのです。
>>545 コンソールアプリケーションを選択すれば出力される。
AnsiStringってもしかして怖い?
普通に使ってるZE!
BCB3proにあったSQLビルダー、 BCB4以降Enterpriseにしかつかなくなったけど proで使えるSQLビルダーないですか?
>SQLビルダー って何するもんですか? ウィザード形式で、 データを取得する表を選択して下さい 取得する列を選択して下さい 抽出条件を指定して下さい →SELECT hoge FROM huga WHERE nullpo みたいな?
そう。 またプログラム実行しなくても、 SQLビルダー内でクエリの結果も表示できるし その結果をエクセルなどに簡単にコピペできたので ちょっとした抽出なんがすごく便利だった。 おまけに、そのSQL文もウィザード形式で 作ってくれた。 だからBCB3以降使ってない。 SQLビルダーの復活を願いたい。
アドバイスどうもです。 >542 自分はwwwcよりwwwdを使っているのですがwwwdに不満があって作ってみようかと(笑 もうちょっと考えてみますね。
556 :
デフォルトの名無しさん :03/07/12 16:39
TStringList *sl=new TStringList; sl->Add("AAA"); ShowMessage(sl->Strings[0]); sl=new TStringList; sl->Add("BBB"); ShowMessage(sl->Strings[0]); delete sl; こんな事した場合、メモリは2回取得されるんでしょうか? それとも、同アドレスの変数が初期化されるだけでしょうか?
同アドレスの変数が初期化? 意味はワカランが、とりあえずメモリリークしてる。
>>556 2回別々に確保され、一回目のものはリークして2回目のものだけ開放される
やっぱり… TListにドンドン追加してるんだけど、 追加し終わったあと(例えばTStringList)Deleteするとフリーズしてしまうんですが。 どうも、TListがコピーされたはずの物を参照せずに、コピー元ばかり見ているようなそんな気がします。 これじゃTListの意味がワカランのですが?
>追加し終わったあと(例えばTStringList)Deleteするとフリーズしてしまうんですが。 ソース出せ。お前の日本語ではらちがあかん。
>>559 コピー・・?
ポインタはいくらコピーしても指す先の同じものしか参照しないし
TListに格納するのはポインタなわけだが・・
>TListに格納するのはポインタなわけだが・・ と、言うことはTListはポインタのポインタと言うことですね?
TListだけをdeleteしてたりして
ボーランドのTListの例です。 new して追加した後、deleteしてないんですが…
!ごめんなさい。 forの所削ってました。(w
>>551 さん
そうですか。
じゃ、構造体の問題かな・・・。
struct unko{
int i;
char hoge[8];
char chinko[4];
};
unko shitai;
strcpy(shitai.chinko,"chin");
strcpy(shitai.hoge,"hogehoge");
AnsiString aschinko;
aschinko=AnsiString(shitai.chinko);
ShowMessage(aschinko);
shitai.chinko の1バイト目が\0 になるんです。
基本的なことかもしれませんが、アドバイスあったらお願いします。
569 :
デフォルトの名無しさん :03/07/13 00:47
>>568 char hoge[8]; // 8バイトである
char chinko[4]; // 直後にある
strcpy(shitai.chinko,"chin"); // 5バイト書き込む(最後は '\0')
strcpy(shitai.hoge,"hogehoge"); // 9バイト書き込む(最後は '\0')
ここで shitai.chinko[0]は '\0'になる
あ、順番を strcpy(shitai.hoge,"hogehoge"); strcpy(shitai.chinko,"chin"); したらOKだ。 勉強しなおしてきまつ。
>>569 そうでした。ありがとうございました。
今、ソケットで上記shitai を送信して受信してるのですが、
受信先でかならずある特定のcharの頭が'\0'になるのに悩んでるのですが、
手がかりを見つけたようです。
ただ。。送信直前では'\0'は入ってないんです。もっかい見直しマス。
>今、ソケットで上記shitai を送信して受信してるのですが、 冗談はよせよ。あまりおじさん達をからかうなよ。
>>572 横レス
冗談といいますとpp(興味津々)
575 :
デフォルトの名無しさん :03/07/13 13:13
TOpenDialog OpenDlg=new TOpenDialog(this); こうすれば、解放処理delete OpenDlg;しなくていいんですよね。
たしかにthisが開放されるときに勝手に開放されるが、それまでは残りっぱなし。
手動作成の一時的なダイアログ用なので それだけ教えていただければ十分です。
>たしかにthisが開放されるときに勝手に開放されるが、 されるか?
TButtonを貼り付けnew TTimer(Button1)ってな感じでButton1を親にしてTTimerを動的に作成。 TTimerのイベントを適当に設定するとそのイベントが発生するが Button1.OnClickで親であるButton1を開放するとTTimerも開放されイベントが発生しなくなる事が確認できる。
開放→解放 気づかなかった(汁
ヘルプでTComponent::Owner見りゃわかる
583 :
デフォルトの名無しさん :03/07/13 16:53
newで構築したインスタンスをFree()メソッドで開放してもいいんですか?
ヘルプに従ったほうがいんでない。
>>572 冗談?
・・・・・。
Socket->SendBuff(&shitai,sizeof(sitai));
これは冗談の類なのでしょうか・・・・?
585=568でした。 冗談な理由を教えていただきたいです。 送受信できてるのが冗談なら別の方法を考えますので・・・・。
>>586 まあ、一般的に構造体というメモリイメージを直接送受信するのは
・バイトオーダー(エンディアン) (主にCPUの違い)
・アライン (コンパイラ、コンパイラ設定の違い)
・その他の内部表現 (浮動小数点や文字コードなど)
の不一致が問題を起こすから、そのプロトコルを使い続けていくと
いろいろ困ってくる。
>>587 レスありがとうございます。
挙げて頂いた注意点は気をつけてます。
では、固定長のバイナリデータを受信側で構造体に落とす、という使い方では
なにか不具合があるでしょうか?送信側では構造体で定義していないという前提で。
↑ あ、受信側のコンパイラのアラインは1です。
Win2kSP4+BCB6ProUPD#4です QuickReportファイル(*.qrp)をPDFに変換するライブラリなりコンポーネントなりは無いものでしょうか
591 :
デフォルトの名無しさん :03/07/15 00:46
Delphiで作ったdfmファイルはそのままC++Builderで使えますか?
>>590 アクロバット(リーダーじゃないやつ)で印刷させる・・・・・。
ってのはだめですか?w
>>591 dfmだけでなく、pasファイルとセットでプロジェクトに組み込めます。
>>592 いやぁ、フリーウェアなんで一緒に配布できるものがいいんですけどね・・・
それに別操作をユーザに強いるのもどうかと
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
アレの方法を教えてくれ
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
CodeGuardによるメモリリークの検出のことなんだけど void __fastcall TForm1::Button1Click(TObject *Sender) { if(OpenDialog1->Execute()) { TStringStream* ps = new TStringStream(OpenDialog1->FileName); } char *s = new char[1000]; } でchar[1000]のほうは検出してくれるんだけどTStringStreamのほうは検出してくれないみたいなんだけど なんか設定がおかしいのかな? あとTStringStreamの読み込みは\nとかは一文字分にして読み込んでくれてるよね? いわゆるテキストモードとか言うやつだよね。
なんか馬鹿な事かいてました。 TStringStreamはファイルをオープンするわけじゃなく、コンストラクタの引数で渡した文字列を ストリームとして表すものだったんですね。標準ライブラリのやつと同じ感じか。 それはわかったんですがなぜメモリリークが検出されないのでしょうか。 あとBuilderの関数とかにはテキストモードでのファイルの読み込みとかするやつはないのですか? まあCやC++の標準ライブラリを使えばいいんだけど一応知りたいんです。
600 :
デフォルトの名無しさん :03/07/15 19:50
>テキストモードでのファイルの読み込みとかするやつ そういやPascalのResetとかReadとかEofとかはC++Builderで使えるのかな?
601 :
デフォルトの名無しさん :03/07/15 20:42
現在BCB5Entを使用しています。 6にアプしようと思っているのですが、予算つごうでProになってしまいます。 そこでお聞きしたいのですが、5Entと6Proではどちらがよいでしょうか? 特に変わったものは開発してませんが、IBX等データベース関係を少しいじる ことがあるので違いが気になります。 過去レスにあるようにSQLビルダもない様だし。
Builder6のInterbaseコンポーネントで質問があります。 InterbaseAdminタブのIbinstallコンポーネントを使おうとすると 「Ibinstall.dllがみつかりません」 とでます。 IB6もインストール済みですし、Ibinstall.dllもあります。 また、このコンポーネントが使えたとしてFirebirdに対して使用することはできるのでしょうか?
>>599 こーいうことかな??
class MyClass {
public:
MyClass() { }
virtual ~MyClass() { }
};
class MyVclClass : public TObject {
public:
MyVclClass() : TObject() { }
virtual __fastcall ~MyVclClass() { }
};
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MyClass* obj = new MyClass(); // メモリリークが報告される
MyVclClass* vcl = new MyVclClass(); // メモリリークが報告されない
}
>>603 おお、確かにTObjectから継承したやつは報告されませんでした。
TStringStreamはTObjectから継承してたからなのかな?
でもCodeGuradにそんな設定は見つけられないんだけどどっかにあるのかな?
それとも仕様なの?
他の人はどうなんでしょう。
アウトルックの左側についてるようなメニューのコンポーネントはないですか?
TListView
いま会社でC++Builder使ってるのですが、1からわかるような良い書籍はありますか? 池袋のビックピーカン覗いてもC++Builderの本が5冊ぐらいしかなかったので・・
>>607 C++の本と、VCLについてはDelphiの本を読むとよい。
C++Builderについての良書はほとんどないですから。
>>608 Delphiですか。C++Builderの本はホントにないですよね・・・
>>609 よさげなんですが、英語は読めないので・・・
英語ほうがしっかり書いてあるというはわかるんですが
612 :
新しいマスクの方法 :03/07/17 17:04
BCB5で以下のようなバグを発見しました。 以下は 1、Canvasを最初に黒一色で塗りつぶす 2、Canvasに朱・オレンジで線を描画する 3、黒の領域をFloodFill(0,0,clBlack,fsBorder)で重ねぬりする。 Image3->Canvas->Brush->Color = clBlack; Image3->Canvas->Rectangle(0,0,Image3->Width,Image3->Height); Image3->Canvas->Pen->Color = (TColor)0x000f3fff; Image3->Canvas->Pen->Width = 4; Image3->Canvas->MoveTo( CX+R2*cos(NeedleAgl), CY-R2*sin(NeedleAgl)); Image3->Canvas->LineTo( CX+R1*cos(NeedleAgl), CY-R1*sin(NeedleAgl)); Image3->Canvas->Pen->Color = (TColor)0x002f6fff; Image3->Canvas->Pen->Width = 2; Image3->Canvas->MoveTo( CX+R2*cos(NeedleAgl), CY-R2*sin(NeedleAgl)); Image3->Canvas->LineTo( CX+R1*cos(NeedleAgl), CY-R1*sin(NeedleAgl)); //----魔法の一行 (何故上手くいくのか不明:2003/07/18発見) Image3->Canvas->FloodFill(0,0,clBlack,fsBorder); このプログラムを実行した結果、針の部分を覗いて 背景のImage1に貼り付けたビットマップが透過して描かれます。 つまり、針部分のみマスクされ、黒い部分は透明になる。
613 :
新しいマスクの方法 :03/07/17 17:04
もともとのプログラムでは、、、 黒一色でべた塗りして針を書き込むだけ、という 以下のようなソースでした。 Image3->Canvas->Brush->Color = clBlack; Image3->Canvas->Rectangle(0,0,Image3->Width,Image3->Height); Image3->Canvas->Pen->Color = (TColor)0x000f3fff; Image3->Canvas->Pen->Width = 4; Image3->Canvas->MoveTo( CX+R2*cos(NeedleAgl), CY-R2*sin(NeedleAgl)); Image3->Canvas->LineTo( CX+R1*cos(NeedleAgl), CY-R1*sin(NeedleAgl)); Image3->Canvas->Pen->Color = (TColor)0x002f6fff; Image3->Canvas->Pen->Width = 2; Image3->Canvas->MoveTo( CX+R2*cos(NeedleAgl), CY-R2*sin(NeedleAgl)); Image3->Canvas->LineTo( CX+R1*cos(NeedleAgl), CY-R1*sin(NeedleAgl)); この場合、(TColor)0x002f6fffで塗りつぶした領域が"透過領域"になります。 私には原因がわからないのですが、マスク処理が簡単に行えるので重宝してます。 原因をご存知の方はいらっしゃいますか?
614 :
新しいマスクの方法 :03/07/17 17:06
つまり、三回重ね塗すると透過領域になる??? 今まで、このような事態に遭遇したことはなかったのですが・・・ 連続投稿すみません(^^;
フォームを透明にできますか? フォームにラベルをのせてそのラベルの文字だけが表示されるみたいなことを したいので、ご存知の方宜しくお願いします。
それは透明にするんではなくて 不定形リージョンで出来そうなんだけど。 ぐぐってみ。
617 :
デフォルトの名無しさん :03/07/18 11:29
今思ったんだけど、例外処理で try{ }catch(...){} と、例外の種類を設定するところで【...】とすれば どんな種類の例外でもキャッチできるわけ? 俺どっかでこの【...】を使ってたの見てずっとこうしてんだけど どうなの?
>>614 bool TCustomForm::TransparentColor
TColor TCustomForm::TransparentColorValue
620 :
デフォルトの名無しさん :03/07/18 12:07
>>616 ビットマップではできるんだが、ラベルも可能?
TStaticTextをParentWindow = NULLにして透過させればいいんじゃない?
622 :
デフォルトの名無しさん :03/07/18 13:03
>>621 すんません、C++Buier1使ってます
他のコンポで代用可能なのあるますか?
>>622 SetWindowLong(Handle, GWL_EX_STYLE, GetWindowLong(Handle, GWL_EX_STYLE) | WS_EX_LAYERED);
SetLayeredWindowAttribute(Handle, RGB(255,0,0), 0, LWA_COLORKEY);
ただし、Win2k以降専用
624 :
デフォルトの名無しさん :03/07/18 13:20
>>623 それって2000とかの透明機能のアレですか?
これはこれで非常にありがたいです。
ありがとうございます。
625 :
デフォルトの名無しさん :03/07/18 13:26
>>623 嗚呼・・
GWL_EX_STYLEとかWS_EX_LAYEREDとかのデファインがヘッダーにないです
626 :
デフォルトの名無しさん :03/07/18 13:35
C++Builder5でExcelって簡単に操作できますか? これに関するHPとかあったら教えて下さい
>>625 PlatformSDKなりbcc5.5.1なりからヘッダファイル持ってくれ
BCB5で黙ってこれ使っとけ!っていうDirectX9.0aのコンポーネントない? ライブラリの改変やヘッダファイルの改変いらずですぐ使えるやつね
BCBでVirtualTreeviewってコンポーネント使ってる人いない? Delphiでは普通に動くのに、BCBではインストールでつまづく。 対応してるって書いてあるのになぁ。もう少し互換性マシにならないかなぁ。
>>630 じゃあ自分で作る鳴りソースいじるなりしろや、ボケ。
社員がキレたw
BCBのランタイム集borlndmm.dll,cc3260mt.dll,rtl60,stlpmt45.dll, vcl60,vcl60.bplてありますよね。普通、BCB持ってない人のために、 入れておくものですけど、これて、提供するソフトに入れても差し支え ないのですかね。なんか、著作権違反しそうでやばそうですよね。 もともと、ボーランドのbinディレクトリーに入っているものですし、 勝手にこれらの物って、使用してかまわないんでしょうか。 よろしくお願いしま〜〜す。
添付の文章なんかないですが。似たようなのにフリーソフトのパックに、 5.1のやつはあるようですが。BCB6に対応したものなのですが。また、Bin ディレクトリーから、拝借した物なのですが。まあ、これなくても動くみ たいですが。コードウォリアーズも、似たようなランタイムがセット 出来るみたいですが。いくらプログラムしても、これないとだめという話 なのですが、著作権はありますし。よく、わかりません。
VirtualTreeviewとやらは、あっさりインスコできたぞ。(BCB6)
インスコしたディレクトリにある deploy.rtf とか読めばいんでない >ランタイムの配布
>>636 割れ物かよ
それはともかく文書と言われて紙の文書しか思い浮かばないとか?
よんでみまつ。とうもありがとう。ランタイムの配布の項目 あるんでしたね。・・・・
BCB6ProにVBのInstrRevに相当する関数ってありますか?
>>642 Delphiには(Ansi)StrRScan()なる物があるからあるんじゃないか?
案外便利だよな。アレ。
>>642 char *相手ならstd::find_endとか
>>643 ありました。ありがとうございました。
StrRScan((const AnsiString AText, const AnsiString& subStr);
ではなく
StrRScan(const char * Str, char Chr);
なのがチョイ引っ掛かるけど・・・
(キャストすりゃいいのか? ま、やってみりゃわかることですな)
>>644 にも感謝
646 :
デフォルトの名無しさん :03/07/21 10:06
c_str()
647 :
デフォルトの名無しさん :03/07/21 21:15
初心者で申し訳ないのですが、 StringGridを印刷するにはどうしたらよいのでしょうか?
648 :
デフォルトの名無しさん :03/07/21 22:12
>>647 QuickReportを使うか
RichEditにキャラクタを使って擬似テーブルを作って印刷するか・・・
650 :
デフォルトの名無しさん :03/07/22 12:32
>>650 全然簡単じゃないがOLE使えば出来る。
WSHでやった方が良いと思うが。
>>626 [プロジェクト]-[タイプライブラリの取り込み]でダイアログ表示して
Microsoft Excel ... を選択して、ユニットディレクトリ選択して
ユニット作成でエクセル使えるラッパークラス作成できる。
654 :
デフォルトの名無しさん :03/07/22 14:49
オリジナルクラスが格納しているデータをディスクに保存したいんですが TStream系のクラスを利用して出来るんでしょうか? その前に、ストリームにクラスの内容を書き込む方法がわかりません。 誰か教えて。
>>561 いやOLEとかWSHとかもうわからないんで
>>652 おっとこれってコンポーネントじゃなしにDLLなら使ってみるかな
>>653 ほほぅ、これって始めて見た。
ラッパークラス作った後はどう操作するんだろうか・・
これもあとでためしてみよう
みなさん、ありりん
657 :
デフォルトの名無しさん :03/07/22 15:16
OpenDailogにラベルやEditボックスを追加したいんですが どうすれば実現できますか?
659 :
デフォルトの名無しさん :03/07/22 16:18
BC6で作成したアプリはmanifestファイルを使ってLuna対応にできるのでしょうか。 BC5ではTListviewをレポートモードにして使っているとダメだったのですが、 BC6+Update#4ではOKですか?
662 :
デフォルトの名無しさん :03/07/22 16:44
>>661 Delphi7相当なのはきっとC++ Builder7ですよね。出るのか知りませんが。
C++ Builder6はダメなのかな。
Delphi7のVCLをC++Builderに移したりって出来るの?
BCBのヘルプ見にくいんですけど・・・
>>658 いやそれ系はググってアレしたんだけれども
コンポをインスコせずに自分でやりたいのですが
その方法を載ってることってどこでしょうか?
ここは夏厨のスクツのイソターネトですね
コンポーネントパレットが表示されないようになってしまったのだけど、 なんとか直す方法ないですかね。
氏ねば
初めまして。5.0を使い始めた者なんですが、実行結果が表示されないんですけど・・・。 form1という何も表示されないウィンドが表示されるだけなんですけど。 別に多機能を使いたいわけではないので、基本的なコンパイルと表示ができれば満足なんですが。 どなたかご教授してもらえませんか?
↑はどうする?
まず、コンソールウィザードを使ってコンソールアプリのプロジェクトを作りましょう。
できました! でも今度は実行結果の表示時間が決められません・・・。 自分はまだ簡単なプログラムしか組めないので。 例えば・・・ { printf("a\n"); } だとaが一瞬表示されるだけで終わってしまいます。 ずっと表示させとくことはできないんでしょうか?
最後の方に、getch()でも入れておきましょう。
678 :
デフォルトの名無しさん :03/07/23 02:24
Borland C++Builder を買おうと思ってるんですが・・・。 Personalでいいんですよね? ProfessionalとかEnterpriseとかは仕事に使う人向けってことですか? いやに高い気が・・・。
入門ならpersonalでも十分 Personal>Professonal>Enterpriseの順に添付されているコンポーネント数や データ―ベースサポート等が増える。 PersonalになくProfessonal以上に有るコンポーネントでも フリーのものが結構出回ってることが多いはづ
エディタの一発ジャンプが…ライブラリよりこっちが重要。>>Pro
一発ジャンプって何?
宣言部と実装部を行ったり来たりしたり、 型や関数をCtrl+Clickで定義部分にジャンプしたり、 関数の宣言を書いてShift+Ctrl+Cで空の実装部を書き込んでくれたり。
684 :
デフォルトの名無しさん :03/07/23 11:59
フォームにタイマーをセットして時間が来たらフォームをアクティブにしたいのですが どうやったらいいのでしょうか?エクスプローラなどを上に置いておいて 時間が来たらそのエクスプローラより上に表示したいのですが よろしくおねがいします
686 :
デフォルトの名無しさん :03/07/23 12:36
>>685 お答えどうもです。
SetForegroundWindowは既に試していたのですが、どうにも最上位に
表示してくれませんでした。ちなみにForm1は非表示にして
>>684 はForm2で
行っているのですが、そこら辺がうまくいかないのと関係しているのでしょうか?
うまくいかなかった理由と解決方法が
>>685 のページに書いてあるでそ。
>>687 すまん、さっきちゃんと読んだら何か書いてた。ありりん
線を描きたいんだけどどうすればいいの?わけわからん。
690 :
デフォルトの名無しさん :03/07/23 18:01
Shapeでも使ってろ
TCanvas::LineTo
692 :
デフォルトの名無しさん :03/07/24 15:14
質問です、よろしくお願いします。 環境はWin2000SP4,BCB6Pro UPD#4です。 250kBのAnsiStringに42kBの\0(0x00)が混じっていまして、 この\0を除去したいので下記の様にしましたら、遅くてとても実用になりませんでした。 速く処理できる方法を教えてください。 \0の数は決まっていない上に位置も不定で、必ずしも一塊になっていません。 ↓のgotdatが250kBの文字列です。 //-------その部分のダメなソース-------- while ( gotdat.Pos('\0') > 0){ gotdat.Delete(gotdat.Pos('\0'),1); } //------------------------------------ よろしくお願いします。
>>692 ・空の dest を定義する。
・gotdat から dest へ、1文字ずつ加えていく。ただし、その文字が '\0' なら、加えない。
・gotdat = dest;
とか?
AnsiString の機能を知らないので、嘘かも。
694 :
デフォルトの名無しさん :03/07/24 15:39
while(gotdat.Pos('\0') > 0){ lng_pos = gotdat.Pos('\0'); strtmp = gotdat.SubString(1,lng_pos-1); gotdat = strtmp + Trim(gotdat.Delete(1,lng_pos)); }
>>693 ありがとうございます
それ、やってみたんですが、やはり遅いです。
AnsiStringで一文字ずつというのは遅いようです。char*でやれば早いのかも
>>694 ありがとうございます
十分早いです。それで行きます。
char* p = text.c_str(); int oldLength = text.Length(); int newLength = 0; for (int i = 0; i < oldLength; i++) { if (p[i] != '0') p[newLength++] = p[i]; } text.SetLength(newLength); なら、一瞬でおわるど。
'0' → '\0' だ
>>696 ありがとうございます
>>694 の方法と比較してみましたら、
>>696 の方法の方が格段に早いです。
GetTickCount()で計測、6回試行しましたが概ね10msずつ早い
それに
>>694 の方法はある程度\0がまとまっている事を期待している感じですが、
>>696 はまったくそういった依存関係が無い
やはりこういった処理はAnsiStringではなくchar*なんですね、勉強になりました。
ありがとうございました。
AnsiStringがどうたらだけでなく、自分自身の領域の中で前に詰めていき、最後に後ろを切って捨てるってことですよね。 他の領域を使わないから、また更に早いと思っていいでしょうか? ループの中でクラスを呼んでないことが一番効いているのだとは思いますけど。
ああそっか、AnsiStringのc_str()の戻り値は const char*じゃなくてchar*だったっけ・・・。
>>699 > 自分自身の領域の中で前に詰めていき、最後に後ろを切って捨てるってことですよね。
たとえばstd::removeがとってる手法もこれだね。
こっちは後ろを「切って捨てる」のではなく、「新しい最後尾」を指すポインタなり
イテレータなりを返す仕様だけど。
ループのたびに'\0'の位置を検索したり、文字の長さを変えたりすれば そりゃあ時間かかるよな。 '\0'の位置がまとまってなくてランダムな配置なら、 悲惨なほど時間がかかる。(250KBで試してるけど、いつまで経っても終わらない)
>>701 c⌒っ*゚ー゚)っφ メモメモ...
>>702 >ループのたびに'\0'の位置を検索したり、文字の長さを変えたりすれば
仰せのとおりですね、毎回関数を呼んでいるからか・・・
C/C++を知らずにいきなりBCBで始めたものでVCLにドップリ溺れています。 もっとポインタを活用することを学ばねば・・・
705 :
デフォルトの名無しさん :03/07/24 21:27
classをnewしてsizeofすると何故かどのクラスでも 4しか取れないんですけど、コレってどういうことですか?
ポインタ変数のサイズ
次は、「じゃあどうやってクラスをファイルに書き込めばいいんですか!」かね?
>>707 public変数をそのまま書けばいいんじゃねーの?
>>707 class SerializeableObject
{
public:
virtual std::string Serialize() = 0;
virtual void Unserialize(const std::string &str) = 0;
}
ファイルから読み書きできるようにしたいクラスをここから継承して実装書く。
>>705 最適なスレッドかホームページがありそうですが、知らないので。
TYPE *p; と定義したとき、
sizeof(p) と sizeof(TYPE*) はポインタ変数のサイズで、sizeof(*p) と sizeof(TYPE) は TYPE の大きさです。
たぶん。
現在、メインForm(Unit1)からサブForm(Unit2)を 複数呼び出そうとしています。 複数、表示することは可能なのですが、 サブForm毎に制御することが出来ません。 良い方法はないでしょうか? 宜しくお願い致します。
> サブForm毎に制御 何のこっちゃ
サブFormをTListに入れていけば? そしてサブForm解放時でTListから削除する。 具体的にはTサブFormとTサブFormManagerとでもして。 TサブFormManager->CreateサブForm()でサブFormを作成して返し、 こっそり内部のTListに追加しておく。ついでにサブFormのメンバ変数にTサブFormManagerを保存しとく。 そしてTサブFormのデストラクタではTサブFormManagerから自身を登録解除してもらう。 サブFormが1種類じゃなくて複数種類必要ならTサブFormを継承して使うようにすればいい。 あとはTサブFormManagerのプロパティからインデックスでTサブFormを参照できるようにしたり、 GetActiveサブForm()とか適当にメソッド入れていくと良いのではないだろうか。 TApplicationのComponentsプロパティをループ回して参照するだけでも良いけど。
Screen->Forms
>>712 分かりづらかったですかね。
簡単に言うと、Main画面はSub画面を呼び出す。
Sub画面はボタンにより、Formサイズの変更を行ったりします。
この動作を、MainからSubを複数、呼び出し、
Sub毎に制御を行いたいのですが、上手く動いてくれないのです。
>>713 ちょっとよく分かり辛いのですが。
すみません。
制御て何
漏れ的解釈 void __fastcall TSubForm::Button1Click(TObject* sender) { Width *= 2; // SubはボタンによりFormサイズの変更をしたりする } void TMainForm::hoge(void) { SubForm1 = new TSubForm(this); // MainはSubを複数作って SubForm2 = new TSubForm(this); SubForm1->Button1->Click(); // Sub毎に… SubForm2->Button1->Click(); }
>>718 これだとhogeが動作したときにボタンが押されたと認識して、
サイズが変わってしまいますよね。
でも、これを参考にして作ったらできました。
どうもありがとうございます。
720 :
デフォルトの名無しさん :03/07/25 18:11
質問ですが、 typedef struct{ int A1:1; int A2:4; } GG; これでコロンの右の数字ってビット数ですか? この構造体のサイズは4byteでA1ってHighになってるのでしょうか? A1に1って代入してA1の値をみてみるとー1ってなってるのですが・・
721 :
デフォルトの名無しさん :03/07/25 18:15
>>720 それはビットフィールドだろ?
コロンの右の数字はメンバーに割り当てるビット数。
722 :
デフォルトの名無しさん :03/07/25 18:18
>>721 ありがとうございます。
でA1はLowとHighのどっちにとられるんですか?
724 :
デフォルトの名無しさん :03/07/25 18:22
>>724 おお、そうだった(笑)
ビットフィールドのビットレイアウトを想定した記述はすべきでないから
どっちから詰められるかを意識したこともないわけだが、
いざ調べてみるとヘルプみても標準の処理系定義項目の設定内容がどこにあるのかわからん・・
>>725 > ビットフィールドのビットレイアウトを想定した記述はすべきでないから
はげどう つーか鉄則か。
727 :
デフォルトの名無しさん :03/07/25 18:52
ん?マジで?なんで?
メモリの少ない組込系ですら使ったことないんだが、 BCBでビットフィールドをあえて使う理由ってあるの?
ビットごとに決められているデータ(ヘッダとか)を扱いやすい。
>>729 それ、ビットフィールドのビットレイアウトを頭に入れないと・・・。
あえて使う理由→データがものすごく巨大になる時 数理計画とかやってるとすごいことにる。
>>729 C++ならビットレイアウトをクラスで隠蔽して、クラス内部でビット演算
すりゃいいじゃんと言うか正攻法だと思うんだけど。
>>731 せいぜい数百Mのデータしか扱ったことがないので気がつかなかった。
>>732 >せいぜい数百Mのデータ
・・・紙テープ換算か何か?ああ、DATか。
>>734 そっとしといてやれ。
常人の「寒い」が彼の「鋭い」なんだ。
736 :
デフォルトの名無しさん :03/07/28 13:13
Borlandのページにあった Borland C++Builder 6 アップデートパック #4 を入れたらコンパイル時にリンカエラーとかが発生するようになって、 説明書のチュートリアル進められなくなったんでインスコし直したよ。 旧バージョンに戻したらコンパイルうまくいった。 環境Win98SE Personal版 C++builder
740 :
デフォルトの名無しさん :03/07/28 13:29
C++Builder7ってまだか?
741 :
デフォルトの名無しさん :03/07/28 13:38
↑VC++にしる!
742 :
デフォルトの名無しさん :03/07/28 15:27
VCなんてうんこは眼中にない
VC買ったんだけどWIN98じゃ動かなかった…
>>743 そんなウンコなOSを使うのは今すぐやめましょう
745 :
デフォルトの名無しさん :03/07/28 15:38
質問です。 for (int i = 0;i<1000;i++){ Graphics::TBitmap *bmp = new Graphics::TBitmap(); Graphics::TBitmap *bmp2 = new Graphics::TBitmap(); BitBlt(bmp->Canvas->Handle,0,0,bmp->Width,bmp->Height,bmp2->Canvas->Handle,0,0,SRCCOPY); delete bmp,bmp2; } これを実行するとメモリリークするんですが、どこらへんがわるいんですかね? ちなみに↓でもリークします。 for (int i = 0;i<1000;i++){ TImage *bmp = new TImage(Image1); TImage *bmp2 = new TImage(Image1); BitBlt(bmp->Canvas->Handle,0,0,bmp->Width,bmp->Height,bmp2->Canvas->Handle,0,0,SRCCOPY); delete bmp,bmp2; }
746 :
デフォルトの名無しさん :03/07/28 15:45
>>744 OSもVCもうんこ。このメーカー自体うんこだから( ´,_ゝ`)
>>745 deleteに変数並べるのはじめて見たけど、
それだとbmp2のデストラクタが呼ばれないみたいよ。
>>748 あ〜、そうだったんですか。
ありがとう。
deleteのとこでなんか違和感を感じてたら…
750 :
デフォルトの名無しさん :03/07/28 19:25
くせースレだなおい
ということは俺って事か
program Test; {$APPTYPE CONSOLE} type TTest = class(TObject) procedure Init;virtual;abstract; constructor Create; end; TTestA = class(TTest) procedure Init;override; end; TTestB = class(TTest) procedure Init;override; end; constructor TTest.Create; begin Init; end; procedure TTestA.Init; begin writeln('My name is TestA'); end; procedure TTestB.Init; begin writeln('My name is TestB'); end; begin TTestA.Create.Free;TTestB.Create.Free; end. これと同じ事をC++でやりたいんですけどうまくいかないです。 どうすれば良いんですか?
コンストラクタで仮想関数呼んでも派生クラスのは呼んでくれないよ。 Initメソッドで初期化しないで、TTestA,TTestBにコンストラクタ作って、 そこで初期化しないと。
コンストラクタの呼び出し順(=仮想関数の決定順)がC++とobject pascalで違うからね。 言語ガイドに詳しく書いてある。
みんなデストラクタって何書いてる? 俺はとくに書くことがないんだが・・・
>>756 仮にコンストラクタでなんかの変数やクラスをnewすることがあっても、君はdeleteすることなく放置か?
>>757 初心者なのでまだnewって使ったことないっすw そっか、deleteするときに使うんだね・・
初心者なのでまだdeleteって使ったことないっすw そっか、newしたときに使うんだね・・
>>759 deleteがしたくてしたくてたまらないからnewするんだよ!
悪いかよ!
デストラクタを使いたいからdeleteする でもdeleteするモノがないからnewする
小4くらいのとき、マンコが穴だなんて思いもしなかった。 が、年の離れた兄貴のいる加戸は 「ヤッターマンコーヒーライター」 などという言葉を知っているいわば勇者的存在であった。 で、穴があることを知った俺たちだが、どうしてもそれが信じられない。 で、むしろ逆にガキであることを利用して調べようと思った。 ターゲットは音楽の教師である。美人だった。今にして思えば 20歳くらいだったのではないだろうか。短大出てすぐだったように思う。 実行はいたって単純。ガキ特有のカンチョーというあれである。 あれを前に突き刺すというのだ。 ガキなら許されるであろうという勝手な発想だが、 たしかにマンコすら知らない奴がほとんどだったからナイスな判断だったろう。 で、実行は加戸だった。 加戸はなんの躊躇もなくやった。 思い切り。 思い切ってやっちゃいかんだろ、と思った。なぜにおまえはフルパワーなのだ、と。 音楽教師は泣いた。20歳前後という年齢を考えればギャグでもきつい。 ガキからすれば大人だったのだが、今思うと娘だ。 むしろ、処女だった可能性すらある。すまん先生。 が、加戸も泣いていた。 両手人差し指骨折だった。第2関節より下で折れていた。 もろに刺さったんだと感心した。やはり勇者だ。 しかも、救急隊員に、マンコに指が刺さって折れましたと泣きながら事情を説明していた。 あの姿も相当かっこよかった
764 :
デフォルトの名無しさん :03/07/29 13:19
つかデストラクタでdeleteすんなら、そのクラスはなくなるんだから わざわざdeleteしなくてもいいんじゃねえの? 一緒にdeleteされるべ?
されねーよ
766 :
デフォルトの名無しさん :03/07/29 13:32
TDatabaseのログインプロンプトが開かないんですがなんでですかね。 Database1->LoginPrompt = true; ですが。
767 :
デフォルトの名無しさん :03/07/29 13:39
Delphiのdblogdlg.pas/initializationが走ってないのが原因みたいですが、 BCBからinitializationをどうやって走らせるのやら。
クールバーにコントロール(いちばん簡単なボタンを試してみた)を2個置くと2列になってしまって ボタンがウィンドウの幅一杯に広がってしまいます。 小さくして2個とも一列に表示しようと思ってボタンをリサイズしても自動的ににウィンドウの幅一杯に広がってしまいます。 どうしたらいいのですか?
クールバーにツールバーとかパネル置いてから、そこにボタンを2個置くとか
771 :
デフォルトの名無しさん :03/07/30 03:06
質問です。 今BCB4PROでGUIのソフト作ってます。 ClipCursorでマウスの移動範囲を制限したいのですが、 SetCursorPosやmouse_event、ShowMessageなんかでも制限が勝手に解除されてしまいます。 これらの関数を実行しなければ制限は有効なままなのですが、 制限した後にmouse_eventでマウスクリック処理などをするため困っています。 何か前もって実行しなければならない関数などあるのでしょうか。
773 :
デフォルトの名無しさん :03/07/30 13:21
C++Builer1で質問ですが フォーム右クリでポップアップメニューを設定してそのメニューで「前面」項目があって それをチェックされるとFormStyle = fsStayOnTopとして、外れると FormStyle = fsNormal; としているのですが、うまく動作しません。 デバッガでステップ実行してるとちゃんと前面になるのですが、普通に実行すると前面になりません なにが原因なのでしょうか?
>>770 TCoolBandのBreakプロパティをfalseにするのを忘れてました。すいませんでした。
>773 少なくともうちのBuilder5のヘルプには >注意実行時に FormStyle の値をなるべく変更しないでください。 って書いてあるよ。実行時に制御するためのプロパティじゃないでしょう。 素直にTControl::BringToFrontとかAPIのBringWindowToTop(HWND)で Zオーダー変えるんじゃ駄目なの?
なるべくて
777 :
デフォルトの名無しさん :03/07/30 19:37
>>775 実行時に使うなとは書いてないんですね( ´,_ゝ`)
>>775 俺の経験。FormStyle を実行時に変更したら、
ファイルのドラドラを受け付けるようにする DragAcceptFiles() の
効果が切れたよ。
何故か?までは追わなかったけど、FormStyle を変える事によって
ウィンドウが作り直されて、Handle プロパティが変わるからじゃないかな?
という事から考えて、Handle が不変であるという前提に拠っている
コードが悪影響を受けるから、ヘルプでは FormStyle を変更するなと
書いているんじゃないかな。
>773 FormStyle を使うのをあきらめて、Windows API で // 手前に SetWindowPos(Form1->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); // 戻す SetWindowPos(Form1->Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); というのはどうでしょう?
780 :
デフォルトの名無しさん :03/07/30 23:40
>>773 プロパティ変える方法だと、
例え出来てもチラつくしフォーカスも消えるし
>>778 さんの言うように変更後DragAcceptFiles()やらないとD&D効かなくなるし、
私は
>>779 さんのようにAPIでゴリッと変更する、に同意です。
781 :
デフォルトの名無しさん :03/07/31 10:05
こんにちは、皆さんお答えありがとう
>>775 C++Builder1のヘルプにも書いてますね。
>>776 なるべくとは書いてないですね^^
>>777 書いてないですね
>>778 それは私も経験あります
でも確かShowイベでそれ書いておくと大丈夫だったような気がしましたが
>>779 あ、別にFormStyleじゃなくても、他のウィンドウより手前・戻すができればいいので
そのAPIを試してみます。情報有難うございます。
>>780 ええ、さっそくAPIを試してみます。
みなさん、ありがとうございます。
782 :
デフォルトの名無しさん :03/07/31 10:23
ああ・・ SetWindowPosでもダメでした・・ HWND_BOTTOMだとちゃんと他のウィンドウより背面にいくのですが、 HWND_TOPMOSTでは前面にきてくれないです・・ これフォームが前面にできない要因が考えられるとしたら どのようなことでしょうか?
784 :
デフォルトの名無しさん :03/07/31 11:43
じゃあ更に Application->BringToFront(); してみるとか。
785 :
デフォルトの名無しさん :03/07/31 12:11
>>784 色々ありがとうございます。
しかしダメでした・・
んー何が影響してるのかなあ
787 :
デフォルトの名無しさん :03/07/31 13:33
VC++という選択肢があるのにわざわざBuilderを選ぶやつはバカ
788 :
デフォルトの名無しさん :03/07/31 13:41
Windowsという選択肢があるのにわざわざ携帯電話を使うやつはバカ 次は?
バイオハザードという選択肢があるのにわざわざゴースト・オブ・マーズを選ぶやつはバカ
VC++なんてウンコなものを使う奴はウソコマミレでバッチィ
792 :
デフォルトの名無しさん :03/07/31 14:29
793 :
デフォルトの名無しさん :03/07/31 14:39
VC++>>>>>>>>>>>>>>>>>>>>>>>>>C++Builder
相手にしねぇでくれ。荒れる。
796 :
デフォルトの名無しさん :03/07/31 14:48
VC++ is better than C++Builder, in anything. Got it!? VC++ is the best all over the world. It's the best product ever in history. OK? これでわかったか?猿ども
797 :
デフォルトの名無しさん :03/07/31 14:52
彼女がいるのに風俗へ行くやつはバカ
風俗有るのに彼女作る奴は非プログラマ。
800 :
デフォルトの名無しさん :03/07/31 16:12
>>797 は童貞
彼女とのSEXと風俗は別物
それがわからんのはガキってこと
801 :
デフォルトの名無しさん :03/07/31 16:12
金払ってやるってのはプライドに反する。
803 :
デフォルトの名無しさん :03/07/31 18:37
( ´,_ゝ`)ショボいプライドだな。夢見る子供の発想か
セックスフレンドは生きてく上で必要不可欠だよな。
質問イイですか?
C++ Builder6 を買ってインストールが終わり チュートリアルに従ってテキストエディタでも作ろうかと 考えていたのですが。。 Images が赤く表示されてWindowsのデフォルトのイメージが使えません。 Comtrl32だかも 5.〜〜バージョンなので問題はないと思います OS Windows XP メーカー NEC VALUESTAR VT900/1
すいません板間違えました
809 :
デフォルトの名無しさん :03/07/31 19:17
>>807 NECとBorlandは仲が悪いからそうなる。
>>809 ありがとうございます
解決策はないのでしょうか?
age
俺がいるのに他の男とくっつく女共は全員バカ
むしろこのような糞レスする>814にくっつく女こそバカである。
てめーそれ以上俺の嫁さんの悪口ゆーな
>>816 どうせ電源入れてゲームスタートしないと会えない嫁さんだろ?
それは嫁さんじゃなくて恋人だろう。
C++Builderはアダルトグッズと(._.) φ メモメモ
アダルトじゃない!純情恋愛グッヅだ! プラトニックなんだよ!
C++Builderでおなるのが今の流行とφ(..)カキカキ
おならない!純なんだ!本気なんだよ!
男がたくさんいるのに女に走る奴らは全員ウホッ
824 :
デフォルトの名無しさん :03/08/01 11:01
ファイルをStringに読みたいんですが、下記の書き方であってますか? もしかして、StringのLengthセットしとかないと、メモリ壊しますかねぇ。 String SFile; TFileStream *FileStream; FileStream = new TFileStream("test.txt", fmOpenRead); FileStream->Write(SFile.c_str(), FileStream->Size);
825 :
デフォルトの名無しさん :03/08/01 11:53
StringListでTXT読んじゃだめなんかい?
じゃ、StringListしてみまつ。 UTF-8だけど大丈夫かなぁ。
827 :
デフォルトの名無しさん :03/08/01 13:20
C++Builder7っていつでるか教えれタコ共
(^^)
さてはおめえ札付きのワルだな?
>>829 フォローされてるけど、フサギコ版はすごい遅そうだ
まさか1バイトづつFileStreamからReadBufferするとは驚異的だ(笑)
このすれは以後
>>831 がフサギコとは比べ物にならない驚異的なパフォーマンスを誇るコードの解説をするすれになりますた。
皆様ご静聴ください。
>>832 つーかすごい古いコードのようだし、今はフサギコ自身もわかってるんじゃないの?
それにリンク先の2で十分だと思うが
今までC++だけで使って不自由を感じたことないけど やはりPascalも勉強しておくか・・・
[C++ エラー] Unit1.cpp(691): E2015 '_fastcall Strutils::RightStr(const System::AnsiString,const int)' と '_fastcall Idglobal::RightStr(const System::AnsiString,int)' の区別が曖昧 と言われてるのですが、どう対処していいかわかりません。 対処法を教えてください。 ---------------------------------------- #include <StrUtils.hpp> : : AnsiString strtmp; strtmp = LE1->Cells[1][2]; strtmp = RightStr(strtmp,17); // ここでエラー吐かれる ----------------------------------------
strtmp = Strutils::RightStr(strtmp,17);
>>836 ありがとうございます
で、同一関数内に下記部分があるのに、その部分でエラーにならず、
>>835 部分でエラーになるのはなぜでしょ?
---------------------------------------------------
strtmp = MidStr(sltmp->Strings[sltmp->IndexOfName("host")],6,256);
LE1->Cells[1][2] = Trim(LeftStr(strtmp,strtmp.Pos("(")-1));
strtmp = MidStr(strtmp,strtmp.Pos("(")+1,128);
LE1->Cells[1][1] = AnsiReplaceStr(strtmp,")","\0");
strtmp = LE1->Cells[1][2];
strtmp = Strutils::RightStr(strtmp,17); // これならOK(修正箇所)
----------------------------------------------------
>>837 の質問の意図は、直前にMidStrやLeftStrがあるのに、なぜRightStrだけ引っ掛かるのかという疑問です。
StrutilsとIdglobalの両方の名前空間にRightStrという関数があるから。 MidStrとLeftStrはIdglobalには無いんだろう。
>>839 idglobal.pasを見たら、その通りでした
くだらない事を聞いてすいませんでした
841 :
BCB6Proにて :03/08/04 07:04
新規のアプリケーションを作成して、Form1のコンストラクタに AnsiString str; str = InputBox("aaa", "bbb", "ccc"); として実行します。 ダイアログが最初表示され、そこにIMEで漢字変換したときに例外が発生します。 これは既知のバグですか?それとも、私のマシンだけがおかしいのでしょうか? また、デバッガからではなく、直接EXEを実行すると出ません。 暇がある方はやってみて報告していただけると助かります。 OSはXP HomeEditionです。 OS、BCBともに最新のアップデートをしています。
842 :
デフォルトの名無しさん :03/08/04 08:07
C++ Builderの方がDelphiよりファイルサイズが大きいって本当ですか?
ヘルプのTWinControl::OnDockOverの例で出てくる、ComputeDockingRectという関数はなんなのでしょうか? 検索しても出てこないのですが。
847 :
デフォルトの名無しさん :03/08/04 09:39
Delphi(Delphi6で確認)だったら新規作成して何もしないプログラムで374 KBなのですけど、 C++ Builderではサイズはいくらになりますかね?
>>847 BCB6
460288bytes(BCB6SP4,リリースモード)
BCB3
248832bytes(BCB3修正パッチ当て済,リリースモード)
849 :
デフォルトの名無しさん :03/08/04 09:55
バージョン6で、約460Kバイトですか。 では、Delphiと比べて何かメリットはあるでしょうか? これはDelphi使うよりC++Builderでやった方が良いとかみたいな感じです。 実行速度もほぼ同じと聞いたのですけど、プログラムの処理する内容によって 大きく変化があるとかはあるでしょうかね? 例えば、画像処理はDelphiよりBCBの方が速いとかみたいな?(画像処理は例えです)
補足ですが、メニューのツール>デバッガオプション>OSによる例外で Access Violationを「デバッガが受け取る」に設定してからではないと出ません。
>>849 C++(ライブラリ含む)が使いたければBCB。
Object Pascalが使いたければDelphi。
速度が気になるならBorlandなんて使わないで
iccとかVC++.NET2003とか使えよ。
852 :
デフォルトの名無しさん :03/08/04 10:18
わかりました。 どうもありがとうございました。 色々考えてみます。
Delphi7だと356KB(365056Bytes)
Delphi6は?
Delphi6 374 KB (382,976 バイト)
>>854 は少し上の書き込みも見えない文盲なので説明しても無駄
IMEを「Microsoft Natural Input 2002 ver. 8.1」から 「Microsoft Natural Input 2002」に変更したら例外が発生しなくなりました。 また「Microsoft IME Standard 2002 ver. 8.1」でも例外が出ますが、 「Microsoft IME Standart 2002」は出ませんでした。 とりあえずこれで回避できたので報告しときます。
>>858 症状は同じことを言っているのかと思い、同じ対策をしてみましたが例外が発生しました。
やはりIMEを変更したほうが良いかもしれません。
ただの例外ならいいのですが、例外を出しているのにOSがハングしてしまうのです・・・。
>>859 ActiveIME の問題で無いのなら初めて聞く話ですね。
XP がでてから結構経つけど、初めてのケースでしょう。
例外の内容とか教えてもらえるとうれしいな。
861 :
デフォルトの名無しさん :03/08/05 12:43
>>856 そんなに煽りたいなら2ちゃんでやれっ!!
ってここが噂の2ちゃんですか?( ´,_ゝ`)
例外はAccess Violationです。 InputBoxのダイアログで例えば「あか」と 入れてスペースキーを押して変換しようと した瞬間に発生します。 例外ダイアログが表示されてOKを押すと ハングしてしまいます。
863 :
デフォルトの名無しさん :03/08/05 14:22
マウスの移動範囲を設定する方法を教えて下さい
864 :
デフォルトの名無しさん :03/08/05 14:47
Main画面からsub画面を複数作成するのにvectorを用いています。 Main画面でsub画面の存在の有無が知りたいのですが、 Main側で生成したvectorの中身を調べて、sub画面の存在の 有無を知る方法はあるのでしょうか? sub画面を作成する処理は以下のようにしています。 vector <TSubForm *> tSubForm; //sub画面生成処理 void __fastcall TMainForm::ButtonClick(TObject *Sender) { tSubForm.push_back( new TSubForm( this ) ); tSubForm[num]->Show(); tSubForm[num]->Refresh(); num++; }
868 :
デフォルトの名無しさん :03/08/06 01:02
Oracle 8iの配列フィールドはEnterprise版でDBGridに表示できるとあるけど Interbaseの配列フィールドもEnterprise版でDBGridに表示できるのか? Professional版で配列フィールドを表示するGridがサードパーティであれば 教えてください。
>>868 「配列フィールド」ってなんだっけ?IB にあったかな?
870 :
デフォルトの名無しさん :03/08/06 10:20
アプリケーション インスタンスのハンドルの取得方法を教えて下さい。
871 :
デフォルトの名無しさん :03/08/06 11:08
SetWindowsHookExでキーをフックしてるのですが ここでキーが押されなかった事にするにはどうしたらいいのでしょうか? それとも他になにかAPIみたいなのがありますか?
>>873 おお!ありがとー
つかTRUE返してるんだけどこれって-1ではない?
ちょっと試してみます
嗚呼・・ やっぱり普通にAlt+Tabとかでアプリ切替できます
Alt-Tab や Alt-Ctrl-Delete は普通のキーでは無いから。
>>876 SetWindowsHookExではそれ系のキーの無効化はできないと?
つかAlt+TabやAlt+Ctrl+Deleteは無効にできないんですか?
>>878 フック行く前にOS側で処理されてるはず。
というか簡単に無効にできたら危ない。
>>879 確かに簡単にできたら危ないんだけどね
フック前にOSにアレされるとどうしようもないですね
DirectXの何かでそれ系あった気もしたがまあそれはいいや
ありがとう
眠い・・・
>>881 それはBCBじゃどうしようもないと思う。
昼飯の後と夕方のこれくらいの時間が一番眠いのはボーランドも認めてる
ほら、すべった( ´,_ゝ`)
885 :
デフォルトの名無しさん :03/08/07 14:01
マウスクリックをフックする方法を教えて下さい。
>>885 フックする種類を WH_MOUSE にすればいいんじゃないの?
あとはCBuilder付属のWin32APIリファレンス参照。
>>887 まったくその通りでした(;´Д`)
つかC++Builder1なんでAPIアレないんですよ
890 :
デフォルトの名無しさん :03/08/07 18:09
これからプログラムを勉強しようと思うのですが CとC++どちらを先に勉強したほうが効率がよいでしょうか?
悪いこと言わないからCからやっておけ。
100%C++
うひょー
むひょ
>>890 最初は難しく思えてもZ80とか簡単なアセンブラから始めておくと覚えやすいね。
BASICから始めた俺はレジスタが最初の壁だったな〜
Z80よっか8086っしょ つか今はアセンブラ覚える必要全くなし! もうアレなんだから普通にC++Builderでいいじゃん
ドレ?
898 :
Indy使い :03/08/08 18:53
Indy9コンポーネント入れたいんだけど…いれられない ダウンして解凍してFullc5.bat実行して,できたフォルダごと環境設定で ライブラリにパス通してもパレットにでてこない 誰かHelp!!…
900 :
デフォルトの名無しさん :03/08/09 03:44
900
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /\ /\ < 糞スレ / \ / \ | おめでとうございまーす / \_/ \ \_______ / \ / ヽ___ ___ / / ヽ__/ \ / ゙Y" \ | │ / / \ | 丶/ / \ \ / ̄ ̄ ̄ ̄) * ( ̄ ̄ ̄ ̄) ヽ_____| ─< |\ >─ ( | ) / (|ミ;\ ( ) ヽ  ̄ ̄) /(___人|,iミ'=;\ (  ̄ ̄ ) /" ̄ ̄ ̄ ̄ / 《v厂リiy\  ̄ ̄ ̄ ̄\ / / ゙|,/'' v:,,、.¨)z,_ \ / / ミ/ .-─ .゙》z、 \ / / 〔」″ノ‐ 、u ¨\ ) ( / ゙|, ..冫 .rー  ̄\_ | | 〔 ミ./′ ..r-ー __,,ア┐ | | | {. .,,,, .′ .´′ .¨\|
| | ∨ ノ冖′=vvvvvv¨\ | / ミ. ,i' .゙\_ | / .{. ノ ,r¬″ .¨\ | / ゙|, | ノ ー''''''''''' .ーミz | | ミ. .,、 ._,,,、、r ,,,,_____ ゙┐ _/" | .ミ. ./′ ´′  ̄⌒'h..¥ (______) {. } ._,,,、 ,ノ冖''^¨ ″〕 ゙|, .,| ./` ,r'′ vvvv、 | .ミ、.` | 二、 〔 、 ,| .〔 | .、 〔 rーー | |.,} .ミ .′ .| 〕 .} ─-「 y-リ .\ |, ´v,,,]、、、v- ..,/′ ゙\ .\、 . _/ ¨'ーvu,,____''工レ-'″
C++Builder 、personalってDelphiみたいに無料で使えるのかと思(略 んで、BCCってC++Builderの開発環境を取り除いただけと聞いたことがあるんですが C++Builderのソースコードをコンパイルして実行なんて、、できませんよね?
VCL使ってると無理だと思う。
905 :
デフォルトの名無しさん :03/08/12 10:25
久々に使ったけど、エディタがぜんぜん進化してないのね。 builderは統合環境を使わざるを得ないんだから、 せめてVC程度のエディタは搭載してほしい。
外部エディタ使えばえぇやん
おいおい・・・
VCのうんこエディタのマシだってかよ・・
>>905 は使いこなしてないっぽいな( ´,_ゝ`)
確かにBuilderの補完は遅すぎるね。 あまりにも遅いので切って使ってるし。
909 :
デフォルトの名無しさん :03/08/13 14:36
・一括整形 ・複数行インデント(複数行選んでTAB押し) Builderってできたっけ?
Ctrl+Shift+I, U
一括整形は無理ぽ
912 :
デフォルトの名無しさん :03/08/13 18:05
( ´,_ゝ`)一括整形 ?
VCでも一括整形ってできたっけ? Vimぐらいしかシラネ
∧,,∧ VC#ではできたんじゃなかったかな? ミ,,゚Д゚彡 ミつ日(ミ
VC6でもできるよ。範囲選択してAlt+F8で自動一括整形。
普通にアプリ作っているとき、 プログラムのなかに大量にprintfが入ってるとまずい? アプリ終了時に原因不明のエラーが出てて、 これ外したらエラーが出なくなったんだけど。
917 :
デフォルトの名無しさん :03/08/14 09:36
ファイルを分割してヘッダファイルが増えると [C++ エラー] sysmac.H(58): E2040 宣言が正しく終了していない って全然見た事もないヘッダファイルからエラーが発生するのですが.. extern "C" {//<-ここでエラー発生 #pragma option push -vi extern "C" { #pragma option push -vi 解決方法ありましたら宜しくお願いします
918 :
デフォルトの名無しさん :03/08/14 09:38
もう二つ BCB6のエディタで行番号を表示するにどうすればいいですか? 同じくエディタで改行コード記号を表示させてカーソルが 改行コードにフォーカスさせるにはどうすれば良いでしょうか?
919 :
デフォルトの名無しさん :03/08/14 09:58
CPAD使えば良いだろ
920 :
デフォルトの名無しさん :03/08/14 11:08
>>919 CPADだとコンパイルまでできるのですね
ありがとうございます。
921 :
デフォルトの名無しさん :03/08/14 14:18
C++Builderで、DirectXとか、使わずに、 ゲーム作るとしたら、やっぱり、IMAGEつかう? それとも、フォームに描く?
ビットマップに描いて、貼る場所は適当
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
RichEdit->Perform(EM_SETOPTIONS,ECOOP_OR,ECO_VERTICAL); これで、縦書きができる。うそかほんとかどっちでしょう?
C++BuilderでDLEPHIのパスカルのコードのコンパイルできるの? VCLはパスカルで書かれてるんでしょ。
>>924 OSに依存するみたい。
昔のRichEd32.dllをExeと同じフォルダに
おいておくと実現できたりもするとかしないとか。
下がりすぎなので age
うそということになるみたいですね。 こんな感じで、縦書きになるみたいなのですが。 うまい方法、探すのに一苦労ですね。924でした。 どうも、ご清聴、ありがとうでした。
>>925 Delで書いたアプリでもそのままコンパイル通ります(゚∀゚)b
ていうかC++BuilderにはPascalコンパイラもついてくるしな(dcc32.exe)
>>928 >>930 >>931 おお、ありがとう。
ちょっと試してみたけど統合環境からdelhiのプロジェクトを開いてもうまくいかなかったけど
pasをプロジェクトに追加したらコンパイルできた。
pasとcppの混ざったやつがコンパイルできてリンクできるんだね。すごい。
しかし二つの言語じゃ型やその他、色々違うのになんで特別なことしなくてもできるのだろう?
でもクラスエクスプローラがpasファイルを認識できないみたいなのが痛い。
delphiのパーソナルにもコードエクスプローラがついてないみたいだし。
ちょっとやってみてDelphiのフォームに対応するpasやdfmをBuilderのプロジェクトに追加すると、プロジェクトのcppファイル(WinMainがあるやつ)に USEFORMNS("ChOwn1.pas", Chown1, Form1); てのが追加されこれが#includeの役割と変数Form1を定義してるらしいことはわかったし、 ふつうのpasファイルとかを追加してコンパイルしたらhppファイルが追加されることもわかったけど もっと詳しくBuilderでpasファイルを利用するやり方が書いてある本とかWebを知りませんか?
>>932 弊社のサポートなどいかがでしょう?
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( )
| 某|
(__)_)
久しぶりに見たなそれ
いっそのこと、Delphiと統合しちゃえばいいのにねぇ。 売り上げ減るからやらんのかもしれんが。
Borland Developer Studioでそのうち統合されます。
フリーコンパイラー使えよ、 なぜわざわざ買ってまでBCBとかVC++とか使うんだ?
>>938 貧乏人は勝手にフリーコンパイラーで手間隙かけてろ
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
向こうのサイトでは C++ Studioってなってるけど 何あれ 16bit版をだきあわせですか?
942 :
デフォルトの名無しさん :03/08/19 10:17
つか、そろそろ次スレよろ
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
Borland C++6を使っているのですが VCLのTreeViewの表示でノードの頭に画像を表示させたい のですがヘルプだけではどう使って良いか分からなかった のでVCLに関する内容が書かれた書籍ありましたらお教え 願います。
ついでにTCustomTreeView::Imagesプロパティのヘルプも目を通して おくとなお良いです。
教えてください。 TMainFormのコンストラクターで内部変数の初期化をしていたのですが、意図した動作を しないため調べていたら、コンストラクターよりも先に、TMainForm::FormCreate が実行されているように見えました。 自分は、クラスが生成されたら必ず最初にコンストラクターが走るものと思い込んでいた のですが、TMainForm::FormCreateが先に実行されるのが正しい動作なのでしょうか?
>>947 ヘルプに、コンストラクタとFormCreate()の同時使用は避けるように
書いてあるでしょう。どちらか一方にしましょう。
>>947 ちなみにすべてのコンストラクタが済んでからFormCreate()が実行され
るのが正しい。
TCustomForm::OldCreateOrder() をヘルプで見て下さい。
>>950 だからTCustomForm::OnCreateをヘルプで見てみろっつーの。
「フォームのコンストラクタとのやり取りが不良になる可能性があるので,
C++Builder で OnCreate イベントを使うことはお勧めできません
(OldCreateOrder を参照)。かわりに,フォームコンストラクタをオーバーライド
することをお勧めします。」って書いてあるだろーが。
コンストラクタより先にFormCreateが呼ばれるのって、 BCB4だけじゃなかったっけ?
そや、これから質問の前にBCBのバージョンを書いてくれ。 俺が答えられるのはBCB6だけだぞ。
BCB6のSTLPortを新しい物に入れ替える方法を教えてださい。
>>955 4.5.3にか?かなりいじらないといけないしここには書ききれん。
余程根性があるなら今入っているSTLportを参考にちまちま
書き換えるしかなかろう。俺はやらん。必要ないし。
>>956 変更はいらないと思うけど。
srcの中のbcb60.makをmake.exeに食わせるだけじゃない?
>>957 ヘッダが全然通りません。
試してみれば分かると思いますが大量のエラー吐いてくれます。
すみません いろいろと試したのですが どうしても見つからないことが有るのですが bcb6.0 proなんですが スプレッドのようなコントロールは有りませんか? グリッドは値が変更できなくて困っています エクセルのイメージでデータを入力したいのですが コンポーネントというのを作るしか無いのでしょうか?
>>959 グリッドの値が変えられないのは、プロパティの設定でエディット不可に
設定したままだからではないかな。
コンポーネントを選んだ貼り付けただけだと、デフォルトではエディット
不可です。
>>959 960の続き。とりあえず、HELPで、TCustomGrid::Optionsを検索してみてください。
TStringGrid は、こいつを継承しています。
そうすると、
> goEditingセルの内容を編集できる。
という説明があります。(ほとんど情報になってないけど)
IDEのほうで、貼り付けたStringGrid について、オブジェクオインスペクタを見ると、
+ Options という項があるので、その+をクリックして展開すると、11番目くらいに
goEditing false なんて表示されるはずです。
ここを true にすれば、ひとまずセルのテキストは書き換え可能になります。
959です
>>961 とりあえず変更できますた。
あとは自分でがんばります
サンクス
963 :
デフォルトの名無しさん :03/08/22 15:50
キーボードから入力されたときの処理を行うにはどうしたらいいんですか? BCB6で。
OnKeyDown / OnKeyUp / OnKeyPress
965 :
デフォルトの名無しさん :03/08/22 16:03
966 :
デフォルトの名無しさん :03/08/22 16:30
キーボードについた精子を綺麗にするメソッドを教えてください
落ち着いて1000ゲット
因みに今はWinInetで誤魔化していますが、 IndyとInetの併用というのが気に入らないのです。
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
1000トリ合戦スタート!
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。