C++Builder相談室 Part8
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG過去スレ・関連サイトは>>2-5あたり。
<過去スレ>
C++Builder相談室
http://piza2.2ch.net/tech/kako/969/969458279.html
新C++Builder相談室(C++Builder相談室 Part2)
http://pc.2ch.net/tech/kako/997/997074601.html
C Builder相談室 Part3
http://pc3.2ch.net/tech/kako/1016/10160/1016065855.html
C++Builder相談室 Part4
http://pc2.2ch.net/tech/kako/1035/10355/1035596146.html
C++Builder相談室 Part5
http://pc2.2ch.net/tech/kako/1045/10455/1045542179.html
C++Builder相談室 Part6
http://pc2.2ch.net/tech/kako/1054/10542/1054280736.html
C++Builder相談室 Part7(前スレ)
http://pc2.2ch.net/test/read.cgi/tech/1061594556/
0263デフォルトの名無しさん
NGNGどのように決まるのでしょうか?
決定するプロパティなり、順番を入れ替えたり、指定したコンポーネントを
最前面に表示するメソッドを教えてください。
(Visibleをfalseにする訳にはいきません。一部のみが重なっている場合、両方を表示させたいので・・・)
0264デフォルトの名無しさん
NGNGありがとうございます。色々試した結果
#include <HTTPProd.hpp>
#include <HTTPApp.hpp>
#include <IdComponent.hpp>
をヘッダに書けばデコード関数が動くみたいです。
どうもありがとうございます。
0265デフォルトの名無しさん
NGNGTControl::BringToFront
例えば
Label1->BringToFront();
0266デフォルトの名無しさん
NGNGスタイルの設定をopDownListにしてるんですが、
それをやるとデフォルトで入れてるTextが空になってしまいますよね。
編集不可にしつつ、デフォルトの状態でTextに文字を入れておくにはどうしたらいいんでしょうか?
0267デフォルトの名無しさん
NGNGどうかね?
0268デフォルトの名無しさん
NGNGだめですー、StyleをcsDropDownListに変更したとたんに
デフォルトのTextに入ってる文字列が飛んじゃいますー。とほ
0269デフォルトの名無しさん
NGNGcsOwnerDrawVariableでどう?
0270デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1072883528/
海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。
必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
0271デフォルトの名無しさん
NGNGだめですー。csOwnerDrawFixedにしてもダメでした。
しょうがないのでデフォルトの文字列をアイテムの一番先頭にして、実行時に
ComboBox->ItemIndex=0;
とやることで代用することになりそうです。
とここまでやって気づいたんですが、そんなことしないでも、インスペクタで初期値を指定できたようです…。
ただし編集不能といってもデリートボタンを押すとTextが空になってしまうので、
汎用的にOnChangeイベントにこんなコードを書くことで完璧になりました。
if(dynamic_cast<TComboBox*>(Sender)->Text.IsEmpty()==true )dynamic_cast<TComboBox*>(Sender)->ItemIndex=0;
おつきあいくださりどうもありがとうございました。
0272デフォルトの名無しさん
NGNGは、VCLを使うBCBでは非常によろしくないような
0273デフォルトの名無しさん
NGNGどういう意味?
詳しく教えていただけます?
0275デフォルトの名無しさん
NGNG配列とかって動的に項目増やしたり項目数の調べたりするの面倒そうだし、
webでも詳しい使い方のってないので、代わりに全部TStringList使ってます。
これならBCBのレファレンスで詳しく使い方とかメソッドとか説明されてるんで安心。
…でも正直ちょっと不安です。
やっぱ何でもかんでもVCLばっかり使う(というかソレしか使えない)のってカッコ悪いですか?
0276デフォルトの名無しさん
NGNGTStringListを普通の配列に使うのは流石にやめれ。
std::vectorかTList使っておけと
0277デフォルトの名無しさん
NGNGTStringListに格納して構造体配列の代わりに使ってた時期があるぞ。
当時は若かった…
0278275
NGNGStringList使ってたとこを全てvector式に置き換えて見ました。
しかし、ただひとつsort使ってるとこだけコンパイルエラーが出ます。
「'sort'は'std'のメンバーではない」
ごく単純なミスだとは思うものの上手く修正できないのでどなたか見て頂けないでしょうか。
cppファイル
#include <vector>
フォームのメンバ
std::vector<AnsiString> hoge;
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){
hoge.push_back("田中");
hoge.push_back("加藤");
hoge.push_back("江田島");
std::sort( hoge.begin(), hoge.end());
}
0279デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNGAnsiString Tex="けっこう!君の手は犬のヨダレでベトベトだァ!それに荷物はさっそく召使に運んでもらう!";
int BeforeTime = Idglobal::GetTickCount();
for(int n=0;n<1000000;n++){
G_NameSearchPath.push_back(Tex);
}
int Time =Idglobal::GetTickCount() - BeforeTime;
int BeforeTime2 = Idglobal::GetTickCount();
for(int n=0;n<1000000;n++){
G_Source->Add(Tex);
}
int Time2 =Idglobal::GetTickCount() - BeforeTime2;
結果、ベクターの方のTimeは765、StringListの方のTime2は282でした。
頻繁に追加したりするには向いてないとは聞いてたもののベクター遅いっす…
0283デフォルトの名無しさん
NGNGループ前にG_Sorce->reserve(1000000); してみ
つか、配列とリスト構造とその他の違いを勉強した方が良いとは思うが。
0284デフォルトの名無しさん
NGNGTCppWebBrowserのNavigateでwebページ読み込んだ後、
マウスホイールでくるくるとページをスクロールしようとしても出来ません。
一度TCppWebBrowser内をクリックしてやるとくるくるホイールでスクロール出来るようになるのですが、
二度手間というか、スマートじゃなくて困ってます。
TCppWebBrowserがアクティブ状態になっていないんだと考えて、
CppWebBrowser->SetFocus() とかやっても効かないのでどうしたらよいのかと。
どうかお知恵を貸して頂けないでしょうか。
0285デフォルトの名無しさん
NGNGTCppWebBrowserの機能ではできない。
フォーカスを当てる
http://hogehoge2001.at.infoseek.co.jp/note-delphi.html
Delphiでのコードだけど。
0286デフォルトの名無しさん
NGNGttp://www.borland.co.jp/cppbuilder/papers/ado/ado02.html
1.フォームにTADOConnectionコンポーネントを配置し、ConnectionStringプロパティで接続文字列を指定する。
ということなのですが、そもそも、ADOConnectionが何処にあるのか分かりません。。。
助けてください。
0287デフォルトの名無しさん
NGNG遅ればせながらありがとうございます。
なんとか出来そうですー
0288デフォルトの名無しさん
NGNGすぐ右隣のタブに強制的にアクティブが移りますよね。
そうではなく削除後のアクティブタブを自分で指定したいので、
TTabSheet *ActTabSheet =アクティブにしたいタブシート;
TTabSheet *DelTabSheet = 削除するタブシート;
DelTabSheet->PageControl=NULL;
delete TabSheet;
PageControl1->ActivePage=ActTabSheet;
といった風に書いてみると、確かに削除後に指定のタブシートがアクティブになるんですが、
その一瞬前にピョコっと削除したタブの右隣にあったタブにフォーカスが移ってしまいます。
この一瞬のピョコって動きがなんともみっともなくてイヤなのですが、
どう書けばこのピョコって動きなしに指定タブにアクティブを移せるんでせうか。
よろしくおねがいします。
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG試していないのですが(もし試してもらえたなら結果をおしえてほしい)
「ピョコっと」なる所でWM_SETREDRAW を送って描画を止めてみたらどうだろう。
0291デフォルトの名無しさん
NGNGコンポーネントのインストールやろうとしたら
致命的リンカエラー:DSNIDE50.LIBがない
と、言われました。
しかし、コンピュータ内を探しても他の拡張子のはありますがDSNIDE.LIBと言うファイルはありません。
VirtualTreeViewを入れて見た頃から何かおかしくなりますた。
誰か助けて・・・
0292デフォルトの名無しさん
NGNGフォーカス移動してから削除じゃダメ?
0294デフォルトの名無しさん
NGNG初歩的なミス、ググレ
0295288
NGNGそれって
PageControl1->Perform(WM_SETREDRAW, false, 0);
//削除してアクティブを移す処理
PageControl1->Perform(WM_SETREDRAW, true, 0);
PageControl1->Repaint();
↑こういうののことですよね。
やってみましたがやはりピョコたん効果は解消されませんでした。
>>292
フォーカスにするというのが
・これから削除するタブ
・削除後にアクティブにするタブ
・これから削除するタブの右隣のタブ
のどれのことかわかりませんでしたが、
とりあえず上二つについてはあらかじめSetFocusしておいても効果ないようです。
他に一時的にEnableをfalseにするなどもしてみましたが意味無し。
個人的になんかあの動きが気持ち悪くて困るんですけどねえ。
まぁ玄人さんなら難しいコード書いてサクっと直しちゃうのかも知れないけど、
自分にはどうも無理そうです…。
0296291
NGNG0297デフォルトの名無しさん
NGNGじゃあ諦めろ
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGTChart に SeriesList プロパティがあります。
これは StrlingList から継承された TChartSeriseList クラスです。
これを使って Serise を追加/削除したり列挙できます。
断片的ですが
ttp://www.berneda.com/publicnews/public/teechart6/general/76010000.htm
これが参考になるかな
0300デフォルトの名無しさん
NGNGありがとうございます!
0301デフォルトの名無しさん
NGNGボタンを押してもcase(IDNO):に飛んでくれません。
どこがおかしいのでしょうか?
よろしくお願いします。
switch (MessageBox( Handle,"変更しますか?","更新", MB_YESNO )){
case (IDYES): // 更新OK
break;
case (IDNO): // 更新NG
Abort;
break;
}
0302デフォルトの名無しさん
NGNGそこの前後でデバッグしたほうが簡単では?
MessageBox の返値をいったん変数に格納し、値をみてみなされ
0303デフォルトの名無しさん
NGNGButtonWidthを指定した幅にする方法を教えてください
0304デフォルトの名無しさん
NGNGキャプションが全部表示できるように幅が勝手に広がるんだと思ったけど。
0305デフォルトの名無しさん
NGNG他のマシンで実行すると、ペイントボックスとかの大きさが変わってしまいます。
もちろん自分のマシンで実行するときは、作ったとおりのフォームになります。
これってコンパイラのバグなのか仕様ってよく分からないんですが、exeを使用するターゲット(OS,CPU)によって
コンパイラのオプションを変えなきゃいけないんでしょうか。
それともソースを使いたいマシンでそれぞれコンパイルするしかないんでしょうか。
0306デフォルトの名無しさん
NGNGもしかして単に画面の解像度が違うというオチじゃ・・・・
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG具体的に大きさがどのように変化したのかを家計
0309デフォルトの名無しさん
NGNG整数a,bを引数として,aがbの倍数であれば1を、そうでない場合は0を戻り値として返す関数
int baisuu(int a, int b)
を作成する。この関数を利用して、入力した数が3の倍数であるか否かを判定するアプリケーションを作成せよ。
If(baisuu(x,3)==1){
Label1->Caption=”3の倍数です”;
}else{
Label1->Caption=”3の倍数ではない”;
}
を使うみたいです。Editに入力してButtonフォームを押したら判別されるらしいでのすがさっぱりです。誰か教えてください。
0310デフォルトの名無しさん
NGNG画面のプロパティの、デザインの「フォントサイズ」が、
「大きいフォント」になってるとかじゃないの?
とりあえず、TFormのScaledをfalseにしてみれば?
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG宿題は宿題スレ池
それに内容がレベル低すぎ。
おまいの頭寒すぎ。
もちっとまじめに勉学に禿目よ。
0313デフォルトの名無しさん
NGNGそもそも何を聞きたいのかわからない。
0314デフォルトの名無しさん
NGNGvoid __fastcall TForm1::Button1Click(TObject *Sender)
{
int ans=0,a,x,baisuu();
{
a=StrToInt(Edit1->Text);
ans=a%3;
x=baisuu();
{
if(ans==0)
{
return (1);
}
else
{
return (0);
}
-------------------------------------------------------------
double TForm1::baisuu(int x,int y);
{
if(baisuu(x,y)==1){
Label1->Caption="3の倍数です";
}else{
Label1->Caption="3の倍数ではない";
}
}
}
値が返せなくて困ってます。
0315デフォルトの名無しさん
NGNGやらしてくれる娘を世話してくれるなら、
「なんだ、こんなに簡単なことだったのか」
と顔を赤らめるくらいにまで、基礎を仕込んであげてもいいぞ。
0316デフォルトの名無しさん
NGNGとりあえず、コンパイラエラーが出ない程度に修正してみましょうね
0317デフォルトの名無しさん
NGNG>>306
そういうのじゃなくて、例えば、正方形の縦が半分になっちゃう、とかだから。
具体的には、グラフを表示してるんですけど、下のほうが表示されませんでした。
>>308
具体的には上のとおりです。横軸は時間で、
縦軸はy = 300 - data8bit; みたいにして、dataが1増えると、1ピクセル上に行くという感じです。
ペイントボックスのHeightは、オブジェクトインスペクタで300以上の値が指定されてます。
>>310
とりあえず、自分のマシンが大きいフォントだったので、小さいフォントに変えてみました。
すると、ペイントボックスのHeightが300以下に変わりました・・・
オブジェクトインスペクタで指定する値って、単位はピクセルじゃないんでしょうか?
0318デフォルトの名無しさん
NGNG>とりあえず、TFormのScaledをfalseにしてみれば?
を確認したのか?
0319デフォルトの名無しさん
NGNGあまりに滅茶苦茶で、救いようがない。
0320デフォルトの名無しさん
NGNGまずBuilderではなくCの基礎を勉強しなおしてこい
0321デフォルトの名無しさん
NGNGdouble TForm1::baisuu(int x,int y);
{
なんで";"が?
baisuuの中でbaisuを呼んでどうする?
最後に戻り値を入れろ
それよりも、倍数判定の方法を考えろ
算数レベルだぞ
ヒント:剰余
0322デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG思い下記のようにやってみました。
このままパレットから貼り付けて使う分には何とか使えるのですが、MYDBGridにOnDrawColumnCellイベントを書いてしまうと、せ
っかく書いた定型処理の部分が実行されなくなってしまいます。
それと、メソッドの隠蔽に関する警告を無視して使っているのもいやな感じです。
わかりにくいかもしれませんが、このような使い方をしたい場合には、どのようにすればいいのか教えていただけないでしょうか?
"MYDBGrid.h"
class PACKAGE TMYDBGrid : public TDBGrid
{
private:
TDrawColumnCellEvent FOnDrawColumnCell;
protected:
void __fastcall DrawColumnCell(TObject *Sender,const TRect &Rect, int DataCol, TColumn *Column,TGridDrawState State);
};
"MYDBGrid.cpp"
__fastcall TMYDBGrid::TMYDBGrid(TComponent* Owner)
: TDBGrid(Owner)
{
TDBGrid::OnDrawColumnCell = DrawColumnCell;
}
void __fastcall TMYDBGrid::DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
/*
適当な処理
*/
TDBGrid::DefaultDrawColumnCell(Rect,DataCol,Column,State);
}
0325デフォルトの名無しさん
NGNG思い下記のようにやって、コンポーネントとしてインストールしてみました。
このままパレットから貼り付けて使う分には何とか使えるのですが、MYDBGridにOnDrawColumnCellイベントを書いてしまうと、せ
っかく書いた定型処理の部分が実行されなくなってしまいます。
それと、メソッドの隠蔽に関する警告を無視して使っているのもいやな感じです。
わかりにくいかもしれませんが、このような使い方をしたい場合には、どのようにすればいいのか教えていただけないでしょうか?
VER:BCB6 OS:Win2K
"MYDBGrid.h"
class PACKAGE TMYDBGrid : public TDBGrid{
private:
TDrawColumnCellEvent FOnDrawColumnCell;
protected:
void __fastcall DrawColumnCell(TObject *Sender,const TRect &Rect, int DataCol, TColumn *Column,TGridDrawState State);
};
"MYDBGrid.cpp"
__fastcall TMYDBGrid::TMYDBGrid(TComponent* Owner) : TDBGrid(Owner){
TDBGrid::OnDrawColumnCell = DrawColumnCell;
}
void __fastcall TMYDBGrid::DrawColumnCell(TObject *Sender,const TRect &Rect, int DataCol, TColumn *Column,TGridDrawState State)
{
/*
適当な処理
*/
TDBGrid::DefaultDrawColumnCell(Rect,DataCol,Column,State);
}
0326324
NGNG0327デフォルトの名無しさん
NGNGDrawColumnCellじゃなくてDefaultDrawColumnCellかDrawCellをオーバーライドする。
DrawColumnCellじゃ駄目なのはヘルプを読むと分かる。
DefaultDrawColumnCellとDrawCellのどちらを使うかは定型処理に照らし合わせて判断する。
0328324
NGNG自分でいろいろやってみたのですがうまくいきません。
できれば宣言方法などをおしえていただけないでしょうか?
やりたいことは、行によって文字色を変えることです。
//-----------------------------------------------
// 奇数行時処理
//-----------------------------------------------
if( DataSource->DataSet->RecNo%2 !=0 ){
Canvas->Brush->Color = FOddColor;
Canvas->Font = FOddFont;
//-----------------------------------------------
// 偶数行時処理
//-----------------------------------------------
}else{
Canvas->Brush->Color = FEvenColor;
Canvas->Font = FEvenFont;
}
0329324
NGNGProtectedに宣言し、下記のように実装してみたのですが、Brushの設定が反映されません。
どの辺が間違えてるのでしょうか?
普段DBGridのOnDrawColumnCellイベントでやってることを内包したコンポーネントを作りたいんですが。
void __fastcall TMYDBGrid::DrawCell(int ACol, int ARow, const Types::TRect &ARect, Grids::TGridDrawState AState)
{
//-----------------------------------------------
// 奇数行時処理
//-----------------------------------------------
if( DataSource->DataSet->RecNo%2 !=0 ){
Canvas->Brush->Color = clRed;
//-----------------------------------------------
// 偶数行時処理
//-----------------------------------------------
}else{
Canvas->Brush->Color = clBlue;
}
TDBGrid::DrawCell(ACol,ARow,ARect,AState);
}
0330デフォルトの名無しさん
NGNGすでに書いてるコードのインデントとかを一括で揃える機能ってありますか?
関数とか条件分岐のカッコの下がりとかのことなんですけど。
自分で書いてあちこちにコピペしたり削除したりしてると、どうも見栄えが悪くなっちゃったんですが、
今さらいちいち1行ずつタブとかでインデントを調整するのも面倒でして。
もしBCBにそういう機能がなければ、既存の有名アプリで代用できたりできないでしょうか。
Dreamweaverとか、無理か…。
ウィンドウズです。よろしくおねがいします
0331デフォルトの名無しさん
NGNG実験してないから保証は出来んが、多分。
×Canvas->Brush->Color
○Columns->Items[ACol]->Color
DefaultDrawColumnCellをいじった方が楽かも?
0332デフォルトの名無しさん
NGNGブロック単位のインデントの上げ下げなら、領域選択後、Ctrl-K-O / -K-I だったような...
ヘルプに乗ってると思う
0333デフォルトの名無しさん
NGNG全部一括で自動インデント、てのは無理そうですが、
これでも大分助かります。
ありがとうございます
0334324
NGNGCustomDBGridのDrawCellないでBrushが再設定されているようなので、呼び出し前にColorプロパティを設定することで解決しました。
しかし、できればDefaultDrawColmunCellをオーバーライドしたいのですが、やってみてもコードが実行されません。
DefaultDrawColumnCellを実行させるにはどうしたらよいのでしょうか?
0335デフォルトの名無しさん
NGNG-------------------------------------------------------
〔Ctrl〕+〔Shift〕+〔I〕ブロックをインデントする
〔Ctrl〕+〔Shift〕+〔U〕ブロックをアウトデントする
-------------------------------------------------------
だとさ
0336デフォルトの名無しさん
NGNGF1001 コードジェネレータの内部エラー
が出ますた。どうすればいいですか?
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNGどうすればいいのでしょうか
とりあえず
button->OnClick= 関数ポインタ
とやってみましたがだめでした
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("Button1Click");
}
新しく呼び出される関数
void __fastcall TForm1::NewFunc(TObject * Sender)
{
//TODO: この下にコードを追加してください
ShowMessage("New Func");
}
イベントハンドラの変更処理
void __fastcall TForm1::ChangeButtonClick(TObject *Sender)
{
Button1->OnClick = NewFunc;
//正確にはButton1->OnClick = this->NewFunc;
}
ちゃんとできたよ。ただの関数じゃなくてTOject型の派生クラスのメンバ関数で引数、戻り値は一致してなくちゃいけない。
代入するのはただの関数ポインタじゃないけど。
ヘルプで __closure を調べてみたら。
>引数、戻り値は一致してなくちゃいけない。
引数、戻り値の型が一致してなくちゃいけないだった。
関数のシグニチャとか言うやつだっけ。
0341デフォルトの名無しさん
NGNGありがとうございました(TдT)
0342デフォルトの名無しさん
NGNGTButton型OnClickイベントの引数は(TObject *Sender)。
呼び出される関数とちゃんと合ってる?
あとだめでしたってどうダメだったのか、あるいはどんなエラーが出たのかを書くこと。
0343デフォルトの名無しさん
NGNGメンバ関数のポインタとオブジェクトの二つを渡さなくちゃいけないんだけどBuilderではC++から拡張されてて
TNewObject* NewObject;
だったら
Button1->OnClick = NewObject->NewFunc;
とか書ける。
さっきのはForm1のメンバ関数内だから省略したけど、違うオブジェクトのメンバ関数を呼ぶようにするときは関数だけじゃ駄目だよ。
NewObject->NewFunc とオブジェクト名も書かなくちゃいけない。
>メンバ関数のポインタとオブジェクトの二つを渡さなくちゃいけない
「メンバ関数のポインタとオブジェクトへのポインタの二つを」だった。
無駄にスレ消費してすみません。
0346デフォルトの名無しさん
NGNG(縦棒グラフを利用しています。デフォルトの0,1,2,…の値を変えたいです)
BottomAxis辺りのプロパティを探ったのですがわかりませんでした。
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGあそこはクライアント領域ではないから書き換えるのは難しいと思うが。
MDI の Non-client 描画を分捕って処理しなきゃいけないよ。
という説明でピンとこなけりゃひっこんでなさい
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGFatal: ファイル6.0BJが開けません
と出ます。
どうすればいいでしょうか・・・
0358デフォルトの名無しさん
NGNGファイル6.cppを「プロジェクトに追加」
0359デフォルトの名無しさん
NGNGいや、「以下」だと含むから訂正。
ファイル名に2バイト文字を使うのはDQN未満。
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG名前に変化し、削除不能になる。
0362むこうの249
NGNGhttp://pc2.2ch.net/test/read.cgi/win/1068705330/248-
の症状の人はいないかな?
俺以外にいなければBCBとは関係なしってことになるんだけど。
■ このスレッドは過去ログ倉庫に格納されています