C++Builder相談室 Part17at TECH
C++Builder相談室 Part17 - 暇つぶし2ch75:デフォルトの名無しさん
07/02/03 16:04:43
>>74
迅速に、ご回答していただき、ありがとうございます。
円、四角形、線、いずれも、ランダムで、かつ、描く数もバラバラです。

開発者ガイドを片手に、unionやvectorを調べているのですが、どのように書くのかわかりません。
ご面倒おかけしますが、簡単なプログラム例を教えていただけないでしょうか。
どうぞ、よろしくお願いします。

76:デフォルトの名無しさん
07/02/03 17:22:14
>75
とりあえずDelphiだけど、文法の違いだけ気にしてみれば参考になると思う。
URLリンク(dn.codegear.com)

77:デフォルトの名無しさん
07/02/03 18:26:02
くだすれは次は立てんの??

78:デフォルトの名無しさん
07/02/04 10:20:49
>75
もうやっちゃったかもしれないけど、>76をBCBに書き直したソース
void __fastcall TfrmMain::pbxDrawMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if ( GetKeyState(VK_LBUTTON) < 0 ){
pbxDraw->Canvas->Pen->Mode = pmCopy;
pbxDraw->Canvas->Pen->Width = 5;
pbxDraw->Canvas->Pen->Color = clBlack;
pbxDraw->Canvas->MoveTo(preX, preY);
pbxDraw->Canvas->LineTo(X, Y);

bmpBuf->Canvas->Pen->Mode = pmCopy;
bmpBuf->Canvas->Pen->Width = 5;
bmpBuf->Canvas->Pen->Color = clBlack;
bmpBuf->Canvas->MoveTo(preX, preY);
bmpBuf->Canvas->LineTo(X, Y);
}
preX = X; preY = Y;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
bmpBuf = NULL;
bmpBuf = new Graphics::TBitmap;
bmpBuf->PixelFormat = pf32bit;
bmpBuf->SetSize(640,480);

preX = -1; preY = -1;
}

79:デフォルトの名無しさん
07/02/04 10:23:30
つづき DelphiのAssignedに対応する関数が分かんなかったのでちょっと変えてある
void __fastcall TfrmMain::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if ( GetKeyState(VK_LBUTTON) < 0 ){
pbxDrawMouseMove(Sender, Shift, X, Y);
}

}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormDestroy(TObject *Sender)
{
if ( bmpBuf ){ // objectがあればtrue
bmpBuf->FreeImage();
delete ( bmpBuf );
}
ReportMemoryLeaksOnShutdown = True;

}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormPaint(TObject *Sender)
{
pbxDraw->Canvas->CopyMode = cmSrcCopy;
pbxDraw->Canvas->Draw(0,0,bmpBuf);
}


80:デフォルトの名無しさん
07/02/04 10:25:16
ヘッダ
class TfrmMain : public TForm
{
__published:// IDE 管理のコンポーネント
TScrollBox *sbxDraw;
TPaintBox *pbxDraw;
TXPManifest *XPManifest1;
void __fastcall pbxDrawMouseMove(TObject *Sender, TShiftState Shift, int X,
int Y);
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall FormPaint(TObject *Sender);
private:// ユーザー宣言
int preX;
int preY;
Graphics::TBitmap *bmpBuf;
public:// ユーザー宣言
__fastcall TfrmMain(TComponent* Owner);
};

81:デフォルトの名無しさん
07/02/04 13:41:52
listboxでリストのインデックスが範囲を超えていますとでます
itemsの数が少ないときは出ないんだけど
20とかになるとでる
なんですか
あとエラーの時にでる数字はなんですか


82:デフォルトの名無しさん
07/02/04 15:09:33
愚問ですみません、winsock2でUDPソケット通信プログラムを作つて問題なく動作しますが
EditでIPアドレスとポート番号を変更できるようにしたいのですが、ポート番号は簡単に
できましたが、IPアドレスの方が参考書どうりでも変更できなくて困っています。
何か参考になる、方法があれば教えてください。
iniファイルか読んでもいいのですが、BCB5 PRO で作っています。 

83:デフォルトの名無しさん
07/02/04 15:37:26
>82
もうちょっと具体的に。

84:デフォルトの名無しさん
07/02/04 17:00:47
>>83
説明不足ですいません。

addr.sin_port = htons(Edit1->Text.ToInt());      //ポート番号はEdit1 にて変更できてる

addr.sin_addr.S_un.S_addr = inet_addr("192.168.1.50");  //IPアドレス 192.168.1.50 をEdit2 で変更できるようにしたい



85:こなきじじい
07/02/04 17:07:02
具体的すぎるわ
このアドレスにアクセスが殺到するぞい

86:デフォルトの名無しさん
07/02/04 17:15:58
>>84
ネットワークは門外漢なんだが、その例で動くんなら
inet_addr(Edit2->Text.c_str());じゃできないかい?

87:デフォルトの名無しさん
07/02/04 18:18:43
>>86
ありがとう、解決しました。

88:デフォルトの名無しさん
07/02/05 00:15:53
BCB初心者です。5.0を利用しています
Delphi用コンポーネント「EmbeddedWebBrowser」
URLリンク(www.bsalsa.com)
をBCBから利用したく、ダウンロードしてきました
URLリンク(www.bsalsa.com)
にDelphiへのインストール方法が載っていたので、同じようにBCBに
インストールしようと思いましたが、うまくいきません
具体的には、「dpk」ファイルを開いた後、どうしていいものかわか
らなくなってしまいました
日本語、英語サイト共に色々あたってみたのですが、このコンポー
ネントの情報はほとんどなく、途方にくれています
わかる方がいらっしゃいましたら教えてください。

89:デフォルトの名無しさん
07/02/05 01:02:14
>>85
192.168.0.0/16はローカルアドレス

90:デフォルトの名無しさん
07/02/05 08:11:08
>>84
それ私のPCのIPアドレスです!
勝手に使わないでください><

91:デフォルトの名無しさん
07/02/05 15:35:37
アクセスのデータベース検索で日付/時刻形式の検索方法がわからないのですが
教えていただけないでしょうか?

Variant vDAO;
Variant vDB;
Variant vRS;
AnsiString strSql;
AnsiString str = DBOpenDialog->FileName;

vDAO = Variant::CreateObject("DAO.DBEngine.36");
vDB = vDAO.Exec(Function("OpenDatabase") << str);
strSql = "SELECT * FROM テストテーブル";
vRS = vDB.Exec(Function("Openrecordset") << strSql << dbOpenDynaset);

vRS.Exec(Function("FindFirst") << buffer); //このbufferに検索条件を入れています
while(!vRS.Exec(PropertyGet("NoMatch"))){
//検索結果に対する処理
vRS.Exec(Function("FindNext") << buffer);
}
vRS.Exec(Procedure("Close"));
vDB.Exec(Procedure("Close"));


92:デフォルトの名無しさん
07/02/05 15:47:10
グローバルIPアドレスとローカルIPアドレスを理解してますか?

93:75
07/02/05 15:51:34
>>76
参考になるURL教えていただき、ありがとうございました。

>>78,79,80
お忙しい中、BCBに直していただき、ありがとうございました。
さっそく、教えていただいたプログラムを参考に、自分の作っているプログラムにあてはめてみました。
多少、自分で作ったモノが悪く、エラーが出てしまいましたが、解決に向けて修正をしています。
本当に、ありがとうございました。

94:デフォルトの名無しさん
07/02/05 22:46:44
おかしいなぁ。そのIPアドレスはうちで使っているはずなんだけど…。
すいませんけど使わないでもらえませんかね?

95:デフォルトの名無しさん
07/02/06 03:18:43
つまらない

96:デフォルトの名無しさん
07/02/06 13:12:01
なら面白くすればいい

97:デフォルトの名無しさん
07/02/07 08:06:08
ファイルの選択は、OpenDialogですが、
フォルダの選択ができる部品ってないでしょうか。

98:デフォルトの名無しさん
07/02/07 11:09:23
>>81
抽象的過ぎて分からんがforとか使ってるなら
for(int i = ListBox1->Items->Count; i >= 0; i--)
として、後ろから参照する


99:デフォルトの名無しさん
07/02/07 11:27:18
スマン..Count - 1だったな

100:デフォルトの名無しさん
07/02/07 20:27:20
>>97
SelectDirectory

101:デフォルトの名無しさん
07/02/07 23:39:03
vista で Builder5 を使ってるんだけど、いくつかトラブルあるね。

1.デバッグサービスがインストールされない。
regsvr32.exe bordbk51.dll で解決

2.OpenDialog がバグる?
OpenDialog でファイル名を拾って OpenDialog->FileName の値を見ると、
変な文字が入っていることがある。再現性は低いけど、2割ぐらいの確立で起きる。

3.フォームのレイアウトが崩れる
これは俺の組み方が悪いのかもしれないけど、ボタンとかが隠れちゃうことがある。

って感じ。解決法とかあればお願い。

102:デフォルトの名無しさん
07/02/08 00:04:48
vistaを窓から投げ捨てろ

103:デフォルトの名無しさん
07/02/08 10:21:48
charで受け取ったコードをTColorへ移したいと思ってまして、
StringToColor関数を使ってみているのですけど、
「EConbertErrorクラスの例外を生成しました」
というメッセージが出てうまくいきません。
charで受け取ってる文字列は「#000000」みたいなものなんですけど、、
私のやり方がまずいのでしょうか?

104:デフォルトの名無しさん
07/02/08 10:41:55
>>103
リファレンス嫁
VCL定数の文字列表現かStrToIntで変換できるunsigned longの文字列表現

105:デフォルトの名無しさん
07/02/08 11:29:53
>>104
そのように言われても、いまいちやり方がわからないのですけど・・
できればもうちょっと分かりやすく説明お願いします

106:デフォルトの名無しさん
07/02/08 11:31:55
>>105
"clBlack"とか"0xFF00FF00"。

107:デフォルトの名無しさん
07/02/08 11:41:41
>>105

int i;
AnsiString s;

s = "#000000";
i = ("0x" + s.SubString(2, 6)).ToInt();
Form1->Canvas->Pen->Color = TColor(i);
Form1->Canvas->Brush->Color = TColor(i);

こんな感じで逝けるのでは?

108:デフォルトの名無しさん
07/02/08 12:17:20
>>107
あっ すみません
intの変数じゃなくてTColorの変数へ返したいのですけど


109:デフォルトの名無しさん
07/02/08 12:56:08
しまった。
オーダーがRGBかBGRかによって処理がまた変わってくるんだった。
RGBオーダーの場合は2文字ずつ切って値を移動させないと・・・

>>108
TColor型変数への代入だったら単に
TColor tcHogehoge = TColor(i);
でよいのでは。

110:デフォルトの名無しさん
07/02/08 14:08:33
>>108
TColorは、
type TColor = -$7FFFFFFF-1..$7FFFFFFF;
で定義されているから、整数型変数だ。
ソースなりマニュアルなりよく嫁。

111:デフォルトの名無しさん
07/02/08 16:14:32
実行時に、ボタンを押すと動的配列を使って、memoオブジェクトを数個ずらりと生成する
方法を教えてください。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 1;
while( i < 6 )
{
TMemo * aMemo = new TMemo(Form1);
aMemo -> Parent = Form1;
aMemo -> SetBounds( 30 + i * 100 , 30, 100 , 100 );
i++;
}
}
上記のコードでも5個ずらりと並ぶのだがちょっと使えない
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 1;
while( i < 6 )
{
TMemo * aMemo = new TMemo(Form1)[10];
aMemo[i] -> Parent = Form1;
aMemo[i] -> SetBounds( 30 + i * 100 , 30, 100 , 100 );
i++;
}
}
このコードも「Cannot convert 'type1' to 'type2'  コンパイラメッセージ」
こんなこと言われるし
型キャストの方法 ?
誰か教えて


112:デフォルトの名無しさん
07/02/08 17:22:28
>>111
何がしたいのかサッパリわからんけど

TMemo * aMemo[10]; //大域変数

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 1;
while( i < 6 )
{
aMemo[i] = new TMemo(Form1);
aMemo[i] -> Parent = Form1;
aMemo[i] -> SetBounds( 30 + i * 100 , 30, 100 , 100 );
i++;
}
}

こんなんじゃダメ?

113:111
07/02/08 18:18:13
112さん
ありがとう!

114:デフォルトの名無しさん
07/02/09 02:08:48
>>100
SelectDirectory ですか。
お礼遅れました。
ありがとうございました。

115:デフォルトの名無しさん
07/02/09 12:12:50
QuickReportを使った印刷について教えてください。

クリップボードから画像をTQRImage上に貼り付けて
それを印刷する、ということをしているのですが、
Previewでは正しく画像が表示されているにもかかわらず
実際に紙に印刷すると真っ黒に塗りつぶされて
出力されてしまいます。

何か情報をお持ちの方、教えてください。
環境は C++ Builder 5 (Update済み) + Win XP SP2、
プリンタはHP Officejet 7210です。

116:デフォルトの名無しさん
07/02/09 12:22:27
ヒント:画像減色

117:デフォルトの名無しさん
07/02/09 16:14:44
>>116
ありがとうございます。
確かに PixelFormat が pfDevice になっていたので
pf24bit に変更したところ、今のところうまくいくようになりました。

ただ、以前の状態でも何回かはうまくいくけどときどき
真っ黒になる、という感じだったのでもう少し様子を見てみます。

118:デフォルトの名無しさん
07/02/09 19:52:23
TClientSocketについて質問があります。
TClientSocketでローカルポートを設定できなくて困っています。
ヘルプを見ると
『クライアントソケットは任意のローカルなポート番号を使います。ほかのソケットがクライアントソケットを見つけ出す必要はないからです。』
とあり設定できそうにありません。
どうにかローカルポートを設定できないものでしょうか?

119:デフォルトの名無しさん
07/02/10 02:12:39
VCLとSTLを混ぜない方がいいのかな。
std::list<AnsiString> とかダメ?

120:デフォルトの名無しさん
07/02/10 05:24:48
BDS2006です。
CodeGuardを使うと、fstreamファイル内で「関数に不正なファイルストリームが渡された」とでたり、
(fopenではなく)_wfopenで開いたファイルに対して、feofなどを行っても、同じエラーがでます。

CodeGuardをOFFにした際の動作は、期待通りのものであるんですが、
なぜこのようなエラーメッセージがでるのでしょうか。(自分が間違ってる可能性が高いですか?

121:デフォルトの名無しさん
07/02/13 01:23:03
BCB6 を使っています。

TComboBox の ->Style が csDropDown で、
->Items が "abcde" で、 ->Text が "ab" にして実行した時に、
▽ をクリックすると "ab" が自動的に "abcde" になりますが、
この時 OnChange が無反応です。反応したいです。
日本語でおk

122:デフォルトの名無しさん
07/02/14 19:58:41
BCB6でメニューを使ってMDI子フォームを表示させるのに、
  Sample = new TSample(Application);
としてるんだけど、なぜかnewでエラーになります・・・

フォームは自動対象から外していて、数あるメニューの
中でも、これ1つだけが突然エラーになってしまいました。

どの辺りから手をつければいいのやら・・・

123:デフォルトの名無しさん
07/02/14 20:18:20
>>122
なんで引数がTApplicationなんだ。
MDI Childなら普通親はMDIフレームだろ。

124:デフォルトの名無しさん
07/02/15 09:19:24
>>122
どんなエラーが出たか書きなさいって、お母さんいつも言ってるでしょ。

125:デフォルトの名無しさん
07/02/15 12:44:31
>>124

エラーは一般保護違反です。
アドレス****の****に対する書き込みがどうの・・っていう。

126:122
07/02/15 14:37:55
大きく勘違いしてて、それに気づくのが遅かっただけですた。
レスくれたひとサンクス

127:デフォルトの名無しさん
07/02/21 02:35:42
TCppWebBrowserで縁を出さないようにするにはどうすればよいでしょうか?
webを読み込んでいない状態だとでないのですが、
読み込むとでてきてしまいます。

フォームなどの
BorderStyle = bsNone
的なのをやりたいです。

if(CppWebBrowser1->Document){
  IHTMLDocument2 *doc = NULL;
  CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (void **)&doc);
  if(doc){
    IHTMLElement *elem = NULL;
    doc->get_body(&elem);
    if(elem){
      IHTMLStyle *style;
      elem->get_style(&style);
      if(style){
        style->put_border(TVariant(0));
      }
    }
  }
}
とやってみましたが、全然でした。

128:デフォルトの名無しさん
07/02/21 19:52:14
Alt+Tabしたときのリストに表示されないようにするにはどうすればよいでしょうか?

129:デフォルトの名無しさん
07/02/22 15:58:20
ボタンをクリックしたところでフォームを表示させたいのですが
ボタンなどにどのようなソースを書けばいいのでしょうか?

130:デフォルトの名無しさん
07/02/22 16:06:20
TForm2 *Form2 = new TForm2(this);
try {
 Form2->init( /*必要なパラメタ。但しTForm2にinitメソッドを作っておく事!*/);
 Form2->ShowModal();
} __finally {
 delete Form2;
}

131:デフォルトの名無しさん
07/02/22 17:03:29
>>130
うまくいきました。ありがとうございます

132:デフォルトの名無しさん
07/02/23 01:06:25
こういうのじゃ駄目だったっけ?

Form2=new TForm2(this);
if(Form2->ShowModal()==mrOk){
//ごにょごにょ
}
delete Form2;

133:デフォルトの名無しさん
07/02/23 01:24:44
DelphiR 2007 for Win32 が発表されましたが、これのC++版 (C++Builder 2007 ??) は出るのかなぁ

誰か詳しい事情、知ってる人いる?


134:デフォルトの名無しさん
07/02/23 08:41:45
>>132

//ごにょごにょ
があるんなら、そういうときこそtry __finallyで囲むべき。

135:デフォルトの名無しさん
07/02/23 11:15:05
>133
それが出たらぜひ買いたい。
出るといいなぁ。。

136:デフォルトの名無しさん
07/02/23 11:31:01
DelとBCBが分かれてくれたのは良いんだけど、
AJAXがEnt版だけなので、Del.EntとBCB.Entを揃えるのはきつい。
というか、買えんだろうな。
Pro版は両方揃えてまつ。

137:デフォルトの名無しさん
07/02/24 01:05:21
>>133
出ません

138:デフォルトの名無しさん
07/02/24 01:52:54
えええーーー!!
CodeGearはC++を切り捨てるつもりか!
対して手間でもないだろうに、C++を付けろ!

139:デフォルトの名無しさん
07/02/24 02:08:36
>>133
C++ Builder 2007も数か月内に出る。
Highlanderよりも早い時期。

>>136
スタンダードサポートに入ればおkじゃねえか?
それかHighlanderまで待てば全部入りだし。

140:デフォルトの名無しさん
07/02/24 03:28:45
BDS2006からHighlanderへの優待コースはあるのでしょうか?

141:デフォルトの名無しさん
07/02/24 17:14:14
当然あるだろ

142:デフォルトの名無しさん
07/02/24 17:51:04
AC版でも、ですか?

143:デフォルトの名無しさん
07/02/24 21:26:41
アカデミック版のこと?
買ったことないから知らない。
BDS2006の時にアップグレード価格で購入できたのなら、今回も同じじゃないのか?

144:デフォルトの名無しさん
07/02/24 21:44:29
アップグレードの時は、AC版も通常版と同じ値段で通常版にアップグレードできる。

145:デフォルトの名無しさん
07/02/26 08:52:51
>>139
それ、AJAX付き?

146:デフォルトの名無しさん
07/02/26 21:45:30
まだ情報が出てない。


147:デフォルトの名無しさん
07/02/27 08:59:31
TListView の HideSelection 的なことを TStringGrid でやりたいのですが
どうしたらいいのでしょうか?

Delphiでそれらしきものを見つけたのですがナニがナニやら・・・
URLリンク(forum.nifty.com)


148:デフォルトの名無しさん
07/02/27 23:32:04
>147
そのサンプルはDelphi上でTStringGridを継承した新しいコンポーネントを作るというもの。
それで問題なければ新規ユニット(.pas)をそのままサンプルのとおりに作ってパッケージに組み込めばいい。

149:デフォルトの名無しさん
07/02/28 01:21:23
TStringGridって基本的にアレだから使いたくない


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch