くだすれC++Builder( ..
[2ch|▼Menu]
357:デフォルトの名無しさん
08/01/16 00:04:00
>>356
TXPManifestをパレットからフォームに適当に配置する

358:デフォルトの名無しさん
08/01/16 00:56:43
>>357
ありがとう
もうCodeGearについていく

359:デフォルトの名無しさん
08/01/16 08:20:08
俺も

360:デフォルトの名無しさん
08/01/16 13:36:25
C++Builder 2007ではその必要すらないのだが

361:デフォルトの名無しさん
08/01/16 22:17:55
シリアルポートからのオン信号とオフ信号を受信してその間の時間を表示するだけのプログラムを
作りました、最大でも約5秒程度です、パソコンによっては遅くカウントされてしまいます。
いろいろなパソコンで試して見ましたが、パソコンのスピードやWIN2000 win xp とか関係なく
正しく計測されるパソコンもあります、何かパソコンの設定のような気もしますが
どなたかわかりますか? c++builder5 pro で作ったプログラムです。

362:デフォルトの名無しさん
08/01/16 23:03:39
>>361
> シリアルポートからのオン信号とオフ信号を受信して

受信処理はどうなってるの?というかオン信号とオフ信号って?

> その間の時間を

どうやって取得してる?

> 何かパソコンの設定のような気もしますが

まず自分のコードを疑おう。

> どなたかわかりますか?

エスパー求むってこと?

363:デフォルトの名無しさん
08/01/16 23:28:12
>>362
説明不足でした。
特定コマンドをオン信号 オフ信号として判断してます。


364:デフォルトの名無しさん
08/01/16 23:41:13
このスレには超能力者は存在していない。
阿呆の見本なら居るようだが。


365:デフォルトの名無しさん
08/01/17 07:40:26
>>363 キミが困ってるのは時間表示の結果が思うようにならないって事なんだろ?
試しに複数の方法で計測してみたらどうだ?

1、VCL  Now() 関数の差
windowsAPI
2 GetTickCount()の差
3 GetMessageTime()
4、timeGetTime()
5、QueryPerformanceCounter()/QueryPerformanceFrequency


366:デフォルトの名無しさん
08/01/17 08:37:09
>>365
親切に対応して頂き有り難う御座います。
試してみます。

367:デフォルトの名無しさん
08/01/17 09:51:17
あとはシリアルポートの通信速度の設定とか

368:デフォルトの名無しさん
08/01/19 18:42:14
C++Buider6を使ってます。

何ミリ秒後に処理を行うというプログラムを書きたいのですが、
時刻をミリ秒以下の単位で加算できるような関数はないでしょうか?
一応、単一スレッドで、複数の処理を実行しないといけないので、Sleep
による停止は出来ません。


例えば、こんな感じで使いたい:

time = getTime();

time1 += 3500;
time2 += 4000;
:

for(;;){
now = getTime();
if( now >= time1 ){
doSometing();
time1 = now + 3500
}
if( now >= time2 ){
doSometing();
time2 = now + 3500
}
:
}



369:デフォルトの名無しさん
08/01/19 19:54:10
CodeGear C++Builder2007の評価版を使っています。
BCB5で作ったソースを読み込み実行すると
パラメータSenderは一度も使用されないと警告がでます。
気になります。
警告を外すのもなんですし。
警告が55もだされるのもいやなんですが。
みなさんはどんな感じなのでしょうか?

void __fastcall TForm1::Button8Click(TObject *Sender)

ちなみに呼び方はBCB7でOK?

370:デフォルトの名無しさん
08/01/19 20:43:28
C++Builder(BCB7ではなくC++Builder2007かBCB11だと思う)を持ってないんであてずっぽなんだけど、
void __fastcall TForm1::Button8Click(TObject *)
{...
とかパラメータを型だけにして仮引数名を書かないってのはだめですか?


371:デフォルトの名無しさん
08/01/19 20:51:06
(TObject *)

がっつり怒られました^^;

372:デフォルトの名無しさん
08/01/19 20:55:05
あ、cppだけSenderを消したらコンパイル通りました。
いろいろやってみます。
Senderってなんだっけ?
調べてみます。ども、助かりました。

373:デフォルトの名無しさん
08/01/19 21:01:26
自己解決
timeGetTimeの戻値を加算で出来ました。


374:370
08/01/19 21:06:48
Senderはそのイベントを起動したオブジェクト。この場合はButton8へのポインタが入っている。

375:デフォルトの名無しさん
08/01/19 21:06:59
SenderのほかにShiftとかX・Y・Buttonとかあったので、
消したら警告はきれいさっぱり。
ほんとにいいのか?ま、いいか

376:デフォルトの名無しさん
08/01/19 21:20:42
>>374
了解です。

377:デフォルトの名無しさん
08/01/19 21:45:26
>>373
完全にオーバースペックになるけどパフォーマンスカウンタ使うと恐ろしい精度で計測できるよ

378:370
08/01/19 22:17:20
使わないパラメータは名無しでおk

379:デフォルトの名無しさん
08/01/21 16:25:37
小さいアイコンを取得したくて、下記のようにしてみました。
TImage* img=new TImage(this);
img->Height=16;
img->Width=16;
Image1->Picture->Icon->Handle=LoadIcon(NULL,IDI_APPLICATION);
すると大きいアイコンの左上1/4が取得されてしまいました。
小さいアイコンをリソースから取得するにはどうすればいいのでしょうか、教えてください。


380:デフォルトの名無しさん
08/01/21 16:43:01
LoadImageでサイズ指定してみては?

381:デフォルトの名無しさん
08/01/21 19:55:02
Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、

本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)

今になって分かりました。
彼らもまた、理解できていなかったのです。

プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
(何といったって、参考にしようとする市販の本さえ、 きちんと説明してくれていないのですから、
 その証拠にC言語の学習で悩む人がどんなに多いことか)

私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。

私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。

そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。

宣伝と言ってしまえば、そうなってしまうかもしれませんが、ひとりでも多くのプログラマを救いたい。

プログラムの世界そのものの実力を底あげに貢献し、
無意味なバグに、残業したり、悩んだりして欲しくないのです。

興味がある方はどうか、下のサイトをみてみてください。
URLリンク(mori.eco.to)

382:デフォルトの名無しさん
08/01/21 21:42:30
日本語でおk

383:デフォルトの名無しさん
08/01/21 21:49:20
そろそろひろゆきの目に止まって多額の広告料金請求されっぞ

384:デフォルトの名無しさん
08/01/22 00:03:25
>379
ExtractIconEx

385:デフォルトの名無しさん
08/01/22 00:03:53
ごめん。リソースからなら違うや

386:デフォルトの名無しさん
08/01/22 00:14:57
>>381
おまえ、2chに宣伝出したら、広告料すごいぞ?
最初にレス書いた時の許諾事項は読んだよな?大丈夫なのか?

387:デフォルトの名無しさん
08/01/22 10:07:36
私の年収は10億万円なので大丈夫です。

388:デフォルトの名無しさん
08/01/23 00:33:41
俺の年収は一兆億円だもんね!

389:デフォルトの名無しさん
08/01/29 03:30:36
TForm1->Release;
としたあと、その開放完了をWaitForSingleObjectのように低い負荷で待ちたいと考えています。
どのようにすればよいでしょうか。
よろしくお願いします。

390:デフォルトの名無しさん
08/01/29 07:50:02
他のスレッドで待ちたいの?
どっちにしても、メインスレッドでメッセージポンプ回してやらないとPostMessage
しただけじゃいつまでたっても終了しないよ。

391:デフォルトの名無しさん
08/01/29 10:22:48
おしえてください。
下記のように定義して、abcの要素数分(5個)をdefの大きさ(x)にしたいのですが
abcを書き換えても、xが自動的に決まるように書くにはどう記述すれいいですか。
AnsiString abc[]={
"111.",
"222",
"333",
"444",
"555"
};
int def[x];


392:デフォルトの名無しさん
08/01/29 12:34:46
>>391 こういう風に。
URLリンク(blogs.wankuma.com)

393:デフォルトの名無しさん
08/01/29 13:02:17
>>392
ありがとう。
_countof()はBuilderには無いんですね。エラーですた。
template <typename _CountofType, size_t _SizeOfArray>
char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
#define _countof(_Array) sizeof(*__countof_helper(_Array))
これをこぴってきて
_countof(abc) にて要素数が簡単に取得できるようになりました。



394:デフォルトの名無しさん
08/01/29 17:14:23
BDS2006で問題なかったプロジェクトが
2007でコンパイルしたらリソースリークが発生した。なんで?
sys\sysutils.pasの何行目とか表示してるけど、このファイルどこにあるの?
エディタのメッセージからは開けなかった。環境変数がおかしいのかな?

395:デフォルトの名無しさん
08/01/29 18:57:59
質問です。

windows タスクバーのボリュームコントロールをプログラムから開くには?
スタート・メニューは、webから探した

HWND hTaskBar=FindWindow(PChar("Shell_TrayWnd"), NULL);
if (SetForegroundWindow(hTaskBar)){
PostMessage(hTaskBar, WM_USER+0x0104, 0, 0);
}
で開けたので、似たような方法で出来ると思うのですが???



396:デフォルトの名無しさん
08/01/29 19:13:23
::ShellExecute(0, "open", "sndvol32.exe", 0, 0, SW_SHOWNORMAL);

397:389
08/01/29 21:04:42
>>390
ありがとうございます。
DLLを作っているのですけれども、ホストの終了時に呼ばれる関数内でフォームを解放し、それが完了したらホストに値を返すようにしたいです。
だから別スレッドでは無いと思います。

398:デフォルトの名無しさん
08/01/29 21:06:13
>>396
レス感謝です。

実は先ほどボンヤリとsystem32フォルダを眺めていてsndvol32.exeを見つけ
WINEXECで開けました。
メインのボリュームだけで良かったんだけど、取り合えず良しとします。

最終的にはアプリ内の自作スライドでこのマスター・ボリュームをコントロール
したくてWin32 API プログラマーズ リファレンスと格闘中です(^^;)

399:デフォルトの名無しさん
08/01/29 23:23:07
>394
FastMMで詳細を表示させてみたら?

400:394
08/02/01 21:51:01
すまん。俺のプログラムミスだったらしい。
原因はよくわからんが、同じ処理を2回やってたのがまずかったらしい。
AnsiStringに数字を入力するときにエラー処理として
try{
edit->Text.ToDouble();
}catch{
edit->Text="1.0";
}
みたいなコード書いてて、この処理の後に別の関数呼ぶんだけど
同じような処理の後、描画の処理になってたのを
このコードの別の関数を呼ぶ場所に描画の関数を書いたらエラーは出なくなったよ。
何でエラーが出たのかさっぱりわからん。
とりあえず自己解決しました。
FastMMはこれから作るプログラム全部に導入しようと思います
ありがとう。

401:デフォルトの名無しさん
08/02/06 14:17:19
OpenMPは使えますか?

402:デフォルトの名無しさん
08/02/07 06:40:37
使えますん。


403:デフォルトの名無しさん
08/02/16 13:24:18
AnsiString s;
AnsiString t="";
s.printf("t=%s",t);
とすると、s が "t=(null)"
となってしまいます。
この(null)を出力させないようにするには、
s が "t="となるようにするにはどうすればいいでしょうか。


404:デフォルトの名無しさん
08/02/16 13:43:33
s.printf("t=%s",t.c_str());

405:デフォルトの名無しさん
08/02/16 14:28:37
>>404
早々に、さんくすです。


406:デフォルトの名無しさん
08/02/27 10:05:06
TubroC++のIDEでhとcppを切り替えるタブが下に付いているんだけど
上に持って来ることは出来ますか?
なんか使いづらくて

407:デフォルトの名無しさん
08/02/27 12:07:37
そんなことよりCtrl+F6押そうぜ!

408:デフォルトの名無しさん
08/02/28 01:06:00
Ctrl+F6は窓使いの憂鬱で別のキーに設定して使ってます
昔のバージョンでは1発で目的のファイルを開けたのに
つかいにくく感じるのは自分だけなのか

409:デフォルトの名無しさん
08/03/02 15:40:26
コンポーネントパレットが見えなくなったのですが
修復できる方法はないでしょうか

410:デフォルトの名無しさん
08/03/02 17:55:19
レジストリのみのインストールは?

411:デフォルトの名無しさん
08/03/02 17:56:04
メガネ買って来い

412:デフォルトの名無しさん
08/03/04 09:56:40
はてな???

プログラム上からのフォルダーのリネーム
ってどうやるんでしょう?

環境XP+BCB++V5。手段は問いません。



413:デフォルトの名無しさん
08/03/04 10:30:12
>>412
Sysutils::RenameFile(const AnsiString OldName, const AnsiString NewName);

414:デフォルトの名無しさん
08/03/04 19:57:19
>>413
レス有難う

ファイルじゃなくてフォルダ
(ディレクトリ)のリネームなんですよ
RenameFile(a,b)ではエラーになりますね。
ヒントなのかな・・・読めない・・?


415:デフォルトの名無しさん
08/03/04 21:02:04
どんなエラー出る?

416:デフォルトの名無しさん
08/03/04 21:18:06
ありがちなところだと、パス名含めてフォルダ名が長すぎ

お手軽にMoveFileのUnicode版使えば?

417:デフォルトの名無しさん
08/03/04 21:52:34
6.0使っています。
image->canvas->pixel[x][y] = (TColor)((a[x][y] >> 16) | (b[x][y] >> 8) | (c[x][y]))
でCanvasに書き、それを
SavePictureDialogでビットマップに保存しているのですが、
保存されるファイルが32bitのビットマップになっているようです。(ファイルサイズ的に)

これを24bitのビットマップで保存したいのですが、どのようにすれば宜しいのでしょうか?

418:デフォルトの名無しさん
08/03/04 22:40:53
Image->Picture->Bitmap->PixelFormat

でいいんじゃね?

419:デフォルトの名無しさん
08/03/04 23:28:54
C++Builder2007開発してます。
非BCB環境のwin2000で実行したところ、
CG32.DLLがないと怒られます。開発環境では動きます。
オプション->デバッグ->CodeGuardの有効チェックボタンfalseと
ツール->CodeGuardの環境設定->CodeGuard無効としてます。

バージョンはC++Builder(R) 2007 R2 Version 11.0.2902.10471で、
sp2とは書いていないのですが、最新と思ってます。

参考に以下のサイトを参考にしましたが、
うまくいきません。情報があれば教えてください。

URLリンク(www.gesource.jp)

420:デフォルトの名無しさん
08/03/05 00:57:03
URLリンク(dn.codegear.com)
の追加情報にバージョンの確認方法書いてあるからまずはそれをチェックしてみれ

421:デフォルトの名無しさん
08/03/05 01:14:29
お世話になります

追加情報

1. このパッチを適用した後も、バージョン情報ダイアログに表示されるバージョン番号は変わりませんが、
bin ディレクトリにあるファイルのタイムスタンプは、11:02になります。

bds.exeが4:04でした。
インストール4回目だわさorz

あしたやってみます。
インストールキャッシュの有無の確認方法ってありますか?
また、インストール時キャッシュの保存ってあったっけ?
情報ありがとうございました。

422:417
08/03/05 19:44:28
>>418
出来ました!ありがとうございます。

しかし、同じコードを書いた別のプロジェクトがあるんですが、それは24bitのビットマップで保存されているんですよね。
imageコンポート上かどっかで設定が出来るんですかね

423:デフォルトの名無しさん
08/03/05 21:43:12
TImageって無駄に冗長だからなぁ

424:デフォルトの名無しさん
08/03/05 22:48:52
ども。
CG32.DLLの件のものです。
意気揚々とアンインスコに取り掛かり、
せいぜい1h程度と思いきや2h以上orzで、
再インスコで以下のキャッシュの削除の有無の
選択画面を期待しながら「次」を押すと
URLリンク(support.codegear.com)
そんな画面が出ずにガンガン突き進んで
無事?完了

で、なぜキャッシュの運用を聞いてこないか
理解できない。
ちなみに、インスコプログラムのバック画像は
グリッド状のドーム天井を背景に
パルテノン神殿っぽい建物の画像で、
URLリンク(support.codegear.com)
は12345といったプログラムコードの背景なので・・・

つかれた。情報あれば、教えてください。

425:デフォルトの名無しさん
08/03/05 23:25:24
某のサポートに問い合わせた方がいいような気もする。
無料インストールサポートあったでしょ。たしか。

426:デフォルトの名無しさん
08/03/06 10:09:31
そうですね。レスありがとうございました。

427:デフォルトの名無しさん
08/03/10 21:16:11
環境はBCB2007WINXP 行数の関係で、詰めてかきます。
以下のソースで、実行F9とビルド時S+F9では挙動がことなりよくわからなくなっています。
実行時は普通にアクティブなソフトの全パスが表示されますが、ビルドしたのを実行すると取得できません。
何かの勘違いか、コンパイラの使用知識不足としか思えません。よくないところを教えていただけないでしょうか?

#include <vcl.h>
#include <psapi.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ HWND hWnd=GetForegroundWindow();
bool blJEJ=false; DWORD dwPID; GetWindowThreadProcessId(hWnd, &dwPID);
hWnd = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID);
DWORD ReturnSize;
if(!hWnd){ ShowMessage("if(!hWnd)");//デバッグ用//ここにhWndの値をShowMessageするにはどうすりゃいいんだ? }
if(hWnd){
char buf[MAX_PATH];
HMODULE hMod; DWORD size;
EnumProcessModules(hWnd, &hMod, sizeof(hMod) ,&size);
GetModuleFileNameEx(hWnd, hMod, buf, sizeof(buf));
CloseHandle(hWnd);//これの意味がわからない。
AnsiString str=fname;  ShowMessage(str);
}
//---------------------------------------------------------------------------
へたなコードですが、素人なのでご容赦を

428:デフォルトの名無しさん
08/03/11 00:16:57
bool blJEJ=false; DWORD dwPID; GetWindowThreadProcessId(hWnd, &dwPID);
hWnd = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID);
DWORD ReturnSize;
if(!hWnd){ ShowMessage("if(!hWnd)");/

どうも、if(!hWnd)がtrueになるみたいです。
ほとほと困りました。なにとどご支援お願いいたします。
状況説明に不足がございましたら、レスしていただければ
助かります。

429:デフォルトの名無しさん
08/03/11 01:03:08
くだスレなんで思いつきだけど
OpenProcess() の戻り値とOSの関係とか、権限とかはOK?

430:デフォルトの名無しさん
08/03/11 09:19:33
>>427
ShowMessage("if(!hWnd)");//デバッグ用//ここにhWndの値をShowMessageするにはどうすりゃいいんだ?
     ↓
IntToStr(hWnd) or IntToStr(hWnd) or AnsiString().sprintf("%08X", hWnd)

431:デフォルトの名無しさん
08/03/11 09:28:41
ちょっと待て、なんでOpenProcessの戻り値をHWNDに入れてる。
OpenProcessの戻り値はHANDLE型。

432:デフォルトの名無しさん
08/03/11 09:52:09
BCB6ってUTF8ファイルのコンパイルってできましたっけ?

能とか表があると、gccのコンパイルが失敗するので、ソースファイルをUTF8にしたいんでつよね。

433:デフォルトの名無しさん
08/03/11 10:08:31
どもです。
>OpenProcessの戻り値をHWNDに入れてる。
OpenProcessの戻り値はHANDLE型。

ちょっと見えてきました。
まずは型の勉強をしてみます。
APIの型ってよくわからないんです。

でも、実行では動くのにビルドでは動かない。
ビルドはできるのに。ちくしょう!
夜やってみます。キャストの件ありがとうございます。

434:デフォルトの名無しさん
08/03/11 12:53:33
OpenProcess()の直後
GetLastError()を調べたところ、
5が帰ってきました。
p://onegland.hp.infoseek.co.jp/wincgi/help/winerror.txt
によると5は
5: アクセスは拒否されました。
とあり、悲しい限りです。
なんらかの対策はないでしょうか?


435:デフォルトの名無しさん
08/03/11 12:56:41
OS側が拒否しないようにセットアップしておく。

436:デフォルトの名無しさん
08/03/11 14:36:34
OpenProcessで要求するアクセス権を必要最小限に

437:デフォルトの名無しさん
08/03/11 19:34:26
dwDesiredAccessの値を全部試してみましたが、
だめでした。

「ウインドウハンドル ファイル名」でググッて
実装しているんですが。

GetForegroundWindowして、希望のexeがトップかどうかを
調べてるだけなんです。。。

ほかにいい方法ありませんか?
あきらかにAPIの問題だけど、あのスレ結構きついんだなぁ。
BCBしかわからんし。すれ違いかな?しつこくて申し訳ないです。

438:デフォルトの名無しさん
08/03/11 19:58:21
というか、何がしたいのか全くわからん

439:デフォルトの名無しさん
08/03/11 20:09:03
アクティブなウインドウが特定のアプリかどうかを
調べたいのです。

そのため、GetForegroundWindowでウインドウハンドルを求めて、
アプリ名を検出し、特定のアプリかどうかの文字列判定をしています。

というわけで、アプリ名を知りたいのではないのです。

具体的には、作ってるのはユーティリティで、特定のアプリを
操作しているときに、激しく自前ソフトを実行し、
非特定アプリを操作しているときは、特定のアプリかどうかの
判定のみを実行するのです。ぅ〜ん、うまくいかないなぁ。
実行とビルド実行でこれだけ差がでるとつらいなぁ。

440:デフォルトの名無しさん
08/03/11 20:29:05
うちの似たようなことしてるソースだとこれで動いてるけど

HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, pid);


441:デフォルトの名無しさん
08/03/11 20:44:04
>>440
おみごと!
どうにか動きました。よくわかんないけど。
いろいろありがとうございました。

442:デフォルトの名無しさん
08/03/11 20:44:14
フルパス必要なきゃこっちの方が手軽かも

DWORD pid;
GetWindowThreadProcessId(hWnd, &pid);

HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,pid);

PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);

bool ret = Process32First(snapshot, &pe32);
while(ret) {
if( pid == pe32.th32ProcessID ) ShowMessage(pe32.szExeFile);

ret = Process32Next(snapshot, &pe32);
}

CloseHandle(snapshot);

443:デフォルトの名無しさん
08/03/11 21:09:03
ども。参考にさせていただきます。
9xにも対応させたいし。って対応可能??
では。

444:デフォルトの名無しさん
08/03/12 01:15:57
9xはProcess32First/Nextでフルパス返してくる(NT系はファイル名のみ)
NT系でフルパス取るにはやっぱりPSAPIで取らないとだめ。

あと9x対応にするにはGetModuleFileNmaeExとEnumProcessModulesをLoadLibrary/GetProcAddressでロードしないとエラーが出る。

445:デフォルトの名無しさん
08/03/12 02:01:47
質問です
TListViewにて
ListView1->ViewStyle=vsReport;にして
ListView1->Columns->Items[0]->Alignment=taRightJustify;
としても、文字列表示が左寄せのままです。
他の列はちゃんと右寄せに表示されます。
先頭列を右寄せで表示するにはどうすればいいでしょうか。




446:デフォルトの名無しさん
08/03/12 06:14:06
TValueListEditorコンポーネントの行数設定は、どうすればできますか?

447:デフォルトの名無しさん
08/03/13 01:31:11
>445
最初のカラムのAlignmentが無効なのはコモンコントロールの仕様じゃなかったっけ?

448:デフォルトの名無しさん
08/03/20 20:01:53
リストボックスをコンボボックスのように一行で表示して
プルダウンリストで表示するプロパティを探しているのですが、
わかりません。教えていただければ助かります。
リストボックスでなくてもいいです。

コンボボックスのように入力は受け付けたくありません。
例としてはIEのインターネットオプションのプログラムタグの
HTMLエディタや電子メールといったリストボックスです。

449:デフォルトの名無しさん
08/03/20 20:25:27
コンボボックスのStyleプロパティにcrDropDownListで問題あるの?

450:デフォルトの名無しさん
08/03/20 20:28:39
OKでした。節穴でした。
ありがとございました。

451:デフォルトの名無しさん
08/03/20 22:39:55
テキストファイルを読み込ませるにはどうすればいいんですか?

今までGCCでやっていたときには同じフォルダにテキストファイル
おいておけばよかったんですが
Turbo C++に変えてからは同じフォルダに置いてもできません

452:デフォルトの名無しさん
08/03/20 22:50:54
カレントディレクトリ?ファイル名は絶対パスで扱うほうが間違いないと思うけどね。

453:デフォルトの名無しさん
08/03/20 23:22:49
>>452
できました
テキストファイルをプロジェクトファイルにおいていました

実行ファイルはDebug_Build内に作られるんですね

454:デフォルトの名無しさん
08/03/21 00:43:11
WinMainの先頭に
SetCurrentDirectory(ExtractFileDir(Application->ExeName).c_str());
とか書いておけばいい

455:デフォルトの名無しさん
08/03/21 23:52:20
それはちょっと…。カレントディレクトリはいつ変更されるかわからんから。

456:デフォルトの名無しさん
08/03/26 01:10:47
win2000でBCB6を使用しています。
TListViewでチェックボックスを表示した場合とTCheckListBoxに表示される
チェックボックスでは見た目が違うのですが(TListViewに表示される方が枠が黒く太い)
これをTCheckListBoxで使われているようなチェックボックスに変える簡単な方法は
ないでしょうか?

457:デフォルトの名無しさん
08/03/27 09:12:23
教えてください。
ダイアログボックスでOKボタンが押されたときに、TEditの内容が未入力だったら
TEditにカーソルを持っていき、入力をしてもらうようにしたいと考えています。
カーソルを持っていくには、
Edit1->SetFocus();で出来たのですが
OKボタンがおされたときに、OKBtnClick(TObject *Sender)で
Edit1のなかみを調べて、何も入っていなければ
Edit1->SetFocus();を実行しても、ダイアログが閉じてしまいます。
これは、ボタンにModalResult=mrOkを指定しているからだとは思います。
OKボタンがおされたときに、Edit1がカラならEdit1へ
ちゃんと入力されていれば、そのままダイアログを閉じたいのですが
どうすればよいでしょうか。


458:デフォルトの名無しさん
08/03/27 09:23:51
if (Edit1->Text.IsEmpty()) {
    Edit1->SetFocus();
    ModalResult = mrNone;
}

459:デフォルトの名無しさん
08/03/27 09:30:42
TForm::OnCloseQueryで中身をチェックする

460:デフォルトの名無しさん
08/03/27 11:18:26
>>458
>>459
できました。
どうもありがとうございます。


461:デフォルトの名無しさん
08/04/04 07:54:34
三項演算子の使い方を教えてください。
AnsiString str;
int index;
if(index!=0)
str="AAA";
else
str="BBB";
これは、
str= index!=0 ? str="AAA" : str="BBB";
このように書けば良いのはわかるのですが、
if(index!=0)
 str.printf("%d",a);
else
 str.printf("%d",b);
これの三項演算子での記述の仕方がわかりません。
indext!=0 ? (str=str.printf("%d",a)) : (str=str.printf("%d",b));
とすると、strにはstrの長さが文字として入ってしまいました。


462:デフォルトの名無しさん
08/04/04 08:04:16
index!=0 ? str.printf("%d",2) : str.printf("%d",3);

463:デフォルトの名無しさん
08/04/04 08:36:01
>>462
できました。ありがとうございます。

すいませんがもう一つ教えてください。
if(index!=0)
 str.printf("%d",a);
else
 str="あいうえお";
の場合はどうすればよいでしょうか。
index!=0 ? str.printf("%d",a) : str="あいうえお";
ではエラーになってしまいます。


464:デフォルトの名無しさん
08/04/04 08:46:40
型を合わせる
index!= 0 ? (void)str.printf("%d", a) : (void)(str = "あいうえお");

465:デフォルトの名無しさん
08/04/04 08:58:40
>>464
なるほどー
すごい勉強になりました。
E2034 'AnsiString' 型は 'int' 型に変換できない
というエラーの意味が全然わからなかったのですが、
三項演算子は、両方で同じ型にしないとダメなんですね。
どうもありがとうございます。


466:デフォルトの名無しさん
08/04/04 12:25:42
てゆーかさ、普通は
str = index != 0 ? "AAA" : "BBB";
とか
str.printf("%d", index != 0 ? a : b);
と書くんだよ。
あと、コンストラクタの初期化リスト等、どうしても「式」が必要な場所とか。
だから、「同じ型」の「式」が並ぶのが当然なの。「式文」じゃないから。

467:デフォルトの名無しさん
08/04/04 14:06:01
質問ですが、VSSとBCBを連携させることはできますか?

468:デフォルトの名無しさん
08/04/04 15:49:54
連携ってどういうふうに?
相互にobjを使うのは形式が違うから誰か変換ツール作らないと無理だけど
同じC++言語だから変換する意味無いでしょうから誰も作らない。

469:デフォルトの名無しさん
08/04/04 16:11:21
Visual SourceSafe ?

470:デフォルトの名無しさん
08/04/04 16:12:28
CVSならコンポあった気がしないでもない

471:デフォルトの名無しさん
08/04/10 01:04:43
まさかC++の方もフリーカーソルだったりしますか?

472:デフォルトの名無しさん
08/04/10 08:13:59
モチロンソウヨ

473:デフォルトの名無しさん
08/04/10 21:15:44
絶望した

474:デフォルトの名無しさん
08/04/11 01:34:37
GExpert?

475:デフォルトの名無しさん
08/04/14 15:13:54
C++Builder2007で開発をしております。

C++Builder6で作られたプロジェクトのビルドができません。
エラー内容は以下の通りです。

[BCC32 エラー] functional(135): E2093 < 演算子が使われたがクラス string には定義が存在しない。


どなたか教えて頂けますか。

476:デフォルトの名無しさん
08/04/14 16:19:18
>>472
いい事言うなあお前。
みんなが頭じゃわかっててもなかなか実践できない事を口に出して言えるなんざ大した自信だよ。
それで出来てなかったらあのインチキ占いのバアさんと一緒だぞお前。
そんなに当たり前の事を言いたかったら尼さんにでもなって言行等しくなってから説教したらどうだ。

477:デフォルトの名無しさん
08/04/14 18:31:56
おk

478:デフォルトの名無しさん
08/04/14 22:25:46
>>475
いい事言うなお前。

479:デフォルトの名無しさん
08/04/15 00:05:26
>475
newsgroupで質問した人?エスパー求むってのもちょっとねぇ。
最小限の再現状況をさらしなさいな。

480:デフォルトの名無しさん
08/04/15 02:33:06
>>475
最低限、エラー行を書けよ。
そんな質問の仕方では誰も答えねえぞ。


481:デフォルトの名無しさん
08/04/15 22:42:20
型のチェックが厳密になってるから
曖昧な表現はすべて確定的表現にしないとダメよ

482:デフォルトの名無しさん
08/04/16 02:50:01
475です。

>>479>>480>>481
質問の仕方が悪くてごめんなさい。
このエラーで困ってたのは
私(とnewsgroupで質問してた人)の関係者なのですが、解決したとのことです。
詳しい事は聞いてないのですが
エラーが出る直前にコンパイル中のCPPに#include <string>を追加したら通ったそうです。
どうもありがとうございました。

483:デフォルトの名無しさん
08/04/17 15:48:42
>482
関係者なんですね?わかります。
ともあれnewsgroupにもなんか書いておいたほうがいいと思いますよ。

484:デフォルトの名無しさん
08/04/18 18:28:24
批判されたら他人のせいにするのは、ゆとりの常套手段。


485:デフォルトの名無しさん
08/04/28 15:47:08
初心者ですが質問させてください。
特殊フォルダを取得したいためSHGetSpecialFolderPath()を使いたいのですが、
定義されていないというエラーが出ます。
#include <shlobj.h>を先頭に挿入すると、さらに大量のエラーが出ます。

どうすれば、よいのでしょうか。
この系統の方法以外で特殊フォルダのパス名を取得する方法はありますか?


486:デフォルトの名無しさん
08/04/28 16:46:18
とりあえず、質問するときにはBuilderのバージョンを書いてね。
それが礼儀っちゅうもん。
#include "shlobj.h"するには、
NO_WIN32_LEAN_AND_MEAN を追加しなければ、二重定義エラーがでる。
設定方法は、Builderのバージョンによりちょいと異なる。


487:デフォルトの名無しさん
08/04/28 23:09:59
>>486 様

すみません、これから気をつけます。
バージョンに関してですが、Turbo C++です。
無料に引きつけられて勉強を始めましたが、国民機時代のTurbo君とは
名前だけが同じだけで後は全く別物でした。(汗)
Turbo C++をもう少し使ってみて、ものになりそうでしたら製品版の
Builderを買おうと思っています。

本題につきまして、
NO_WIN32_LEAN_AND_MEAN を#defineしましたら、問題なく動きました。
本当にありがとうございました。
今後も調べても分からないことを質問させて頂きますのでよろしく
お願いいたします。

488:デフォルトの名無しさん
08/04/28 23:19:36
>>487
こっちのTurbo君などはいかが?
URLリンク(dn.codegear.com)

ちなみに新TurboのExplorerエディションはコンポーネントの追加が出来ない以外はほぼProfessionalと同等の機能持ってた気がする。
ちなみに自作や他作コンポーネントはRAD環境で使えないだけでソース上でnewすればExplorerでも使える。

489:デフォルトの名無しさん
08/05/01 22:57:30
C++Builder6.0で、VBのMidBみたいに指定した場所の文字を抜き出すにはどうやったらいいのでしょうか?
ググったらBuilder3で、専用の関数を作ったりしてましたが・・・6.0でも簡単にはできないのでしょうか?

490:489
08/05/01 23:21:32
あ、文字は半角のみで全角は扱いません

491:デフォルトの名無しさん
08/05/02 00:20:10
文字を?c_str/dataで。文字列を?Copyで。

492:489
08/05/02 00:36:04
ああっ、AnsiStringのSubStringとかで出来たんですね
すいませんでした&ありがとうございました

493:デフォルトの名無しさん
08/05/02 00:44:32
別にAnsiString使わなくても::strncpy(dest, src + 先頭オフセット, 抜き出す長さ);でいいじゃない。

494:デフォルトの名無しさん
08/05/02 02:59:51
AnsiStringがずっと便利じゃん。
バッファとか考えなくてイイ。


495:デフォルトの名無しさん
08/05/02 08:06:11
速度を取るか簡便性を取るかは自由

496:デフォルトの名無しさん
08/05/07 13:17:55
TStringGrid を継承したクラスを作ろうとしたら、「型名が必要」というエラーがでてしまいました。

新規作成→アプリケーション から、ヘッダファイルでとりあえず、classの宣言をしただけなんですが
「Unit1.h」

#include <Forms.hpp>
//---------------------------------------------------------------------------
typedef class TMyStringGrid : public TStringGrid
{ // ← ここんとこで 「[C++ エラー] Unit1.h(12): E2303 型名が必要」 と怒られます
private:
public:
__fastcall TMyStringGrid(TComponent* Owner);
}TMyStringGrid;
//---------------------------------------------------------------------------
class TForm1 : public TForm


「TStringGrid」 を「TForm」や「TCheckBox」に変更すれば、問題なくコンパイルされるので
「タイプミスか?」と何度もチェックしてみたのですが、、、

環境は
BCB6pro、cb6_upd4_pro修正パッチ適用済、WinXP pro SP2
です。ご指導の程、よろしくお願いいたします <(_ _)>

497:デフォルトの名無しさん
08/05/07 13:28:29
>>496
まずはVCLリファレンスの読み方でも勉強しようか

TStringGrid
ユニット Grids

結論から言うと宣言されてない型から継承したクラスをどうやって作るのかと。

498:496
08/05/07 13:33:21
すんません、自己解決しました。

#include <Grids.hpp>

これが必要だったみたいです (^^;;;;
ども、お騒がせでした

499:496
08/05/07 13:36:14
>>497
あ、すいません、前後してしまいました
いや、なんかそこらへんのクラスに必要なヘッダってのは最初っから
インクルードされてるもんだと思ってました (^^;;;;

ありがとうございました <(_ _)>

500:デフォルトの名無しさん
08/05/07 13:38:16
>>499
パレットからフォームにコンポーネント置けば勝手にヘッダファイルが追加されるけど、ソース上でのみ宣言だと手動でヘッダincludeしないとダメだお

ついでにtypedefはいらん気もするけど。

501:496
08/05/07 14:09:51
>>500
なるほど、そういう仕組みでしたか。

typedef しとかないと、宣言のときに一々 class xxxx って
頭にclassをつけなきゃいけなくなると思っていたのですが、
あれ?typedef しなくても、「 class 」って記述抜きで通っちゃいました
なんでだろう????

色々とありがとうございました <(_ _)>


502:デフォルトの名無しさん
08/05/08 10:21:49
そして、ドナドナ

503:デフォルトの名無しさん
08/05/09 06:35:46
unixのソースをPC上に移植したいと考えています。
・別階層に同名のファイルやフォルダって作れますか?(
・一気にサブフォルダを含めてプロジェクトに作成する事はできますか?
(一つずつ、フォルダを掘って作成しないといけませんか?ドロップできなくて..)

504:デフォルトの名無しさん
08/05/09 17:04:01
コンポーネントのアンインストール方法

コンポーネントを試作中なのですが
コンポーネントをインストールした状態でのテストをしてみたいと考えています。
(オブジェクトインスペクタがどんな感じになるかとか。。。)
ということで

1.テストコンポーネントのインストール
2.コンポーネントのテスト
3.テストコンポーネントのアンインストール
4.コンポーネントの手直し

という手順を繰り返したいのですが
3.をどうやってやったらよいのかがわかりません

bcb6proです。
ご指導の程よろしくお願いします <(_ _)>

505:デフォルトの名無しさん
08/05/09 17:12:20
パッケージのインストールのダイアログで該当パッケージのチェックボックスを外すでいいんじゃないの?
てかアンインストールしなくてもテスト>手直し>コンポのビルド>インストールで問題ない。

506:504
08/05/09 17:55:26
>>505
なるほど!それでやってみます
ありがとうございました <(_ _)>

507:デフォルトの名無しさん
08/05/09 18:08:30
複数のフォームで同一の関数を使うにはどうしたらよいのでしょうか?
ヘッダファイルのpublicに入れるだけではダメですよね?
ソフトはBCB6.0Proです。
よろしくお願いします。

508:デフォルトの名無しさん
08/05/09 18:35:37
入門書嫁としか

509:507
08/05/10 00:51:44
調べたところ、以下の本が良い、とのことで注文してみましたが・・・載っていますでしょうか?
田舎なので本屋に置いてないので、見てから買うことが出来ないため、来るまでわからないんです。

URLリンク(www.amazon.co.jp)
%E5%AE%9F%E8%B7%B5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%80%88Vol-2%E3%80%89%E5%AE%9F%E8%B7%B5%E3%83%86%E3%82%AF%E3%8
3%8B%E3%83%83%E3%82%AF%E7%B7%A8-%E7%94%B0%E4%B8%AD-%E5%92%8C%E6%98%8E/dp/4877830626/ref=sr_1_22?ie=UTF8&s=books&qid=1210348178&sr=1-22

510:デフォルトの名無しさん
08/05/10 13:26:42
とりあえず関数の宣言が書いてあるヘッダファイルを
全部のフォームのソースにインクルードしときゃいいんじゃね?

511:デフォルトの名無しさん
08/05/10 13:59:05
派生コンポーネントでのプロパティのオーバーライド
アクセッサの再利用について。
bcb6.0pro / WinXP SP2 pro

例えば、TEdit を継承して TMyEdit というコンポーネントを作成し、
そこで、BorderStyle プロパティをオーバーライドして
BorderStyle を変更するときに、サイズも一緒に変化させるようにしたい場合、
新規の writeアクセッサ の中で従来のアクセッサを再利用することは出来ないもんでしょうか?
つまり
// QMyEdit.h
//---------------------------------------------------------------------------
class PACKAGE TMyEdit : public TEdit
{
private:
  void __fastcall SetMyBorderStyle(TBorderStyle BorderStyle);
      // Myアクセッサ宣言
  TBorderStyle FBorderStyle; // ここで再宣言?しないと
      // 「'FBorderStyle' は 'TMyEdit' のメンバーではない」 と怒られる
protected:
public:
  __fastcall TMyEdit(TComponent* Owner);
__published:
  __property TBorderStyle BorderStyle =           // プロパティオーバーライド
                        {read=FBorderStyle,
                        write=SetMyBorderStyle, // ←ここのwriteを拡張したい
                        default=bsSingle};
};
//---------------------------------------------------------------------------

512:デフォルトの名無しさん
08/05/10 14:01:05
// QMyEdit.cpp
//---------------------------------------------------------------------------
void __fastcall TMyEdit::SetMyBorderStyle(TBorderStyle BorderStyle) // Myアクセッサ実装
{
  if(BorderStyle != FBorderStyle)
    if(BorderStyle == bsSingle) this->Width += 10; // なんだかんだで
    else                    this->Width -= 10; // ぐちゃぐちゃやってから

  TCustomEdit::SetBorderStyle(BorderStyle);      // 基底のアクセッサを呼び出す
}
//---------------------------------------------------------------------------

と、こんな感じのソースなのですが
[C++ エラー] QMyEdit.cpp(39): E2247 '_fastcall TCustomEdit::SetBorderStyle(const TBorderStyle)' はアクセスできない
と怒られてしまいます。
っていうかよく考えたら、元々こいつらはprivateで宣言されてるはずなので
当たり前っつっちゃ、当たり前なんですが、なんとかして SetBorderStyle ってのを
再利用できないものでしょうか?
それともやっぱり、ゴリゴリと一から実装し直さないと駄目なのものなのでしょうか?
よろしくお願い致します <(_ _)>

513:507
08/05/10 15:49:09
>>510
それはやっているんですけど、動かないので・・・。
メインのフォームに書かれている関数なので、そのヘッダファイルは他のフォームでもインクルードしているのですが、
未定義の関数として見られてしまうんです。

514:デフォルトの名無しさん
08/05/10 16:40:20
TEdit から継承されたBorderStyleに値を突っ込めばええだけだろ。



515:デフォルトの名無しさん
08/05/10 16:51:18
>>513
メインフォームのメンバ関数として定義してりゃそりゃ見つからんだろ。
普通の関数にしないと。

516:デフォルトの名無しさん
08/05/10 18:26:48
>>514
なるほどっ!!

//  this->BorderStyle = FBorderStyle; // ←これじゃBorderStyleが変わるわけがない
    TEdit::BorderStyle = FBorderStyle; // ←こっちでバッチリ!!

オーバーライドされる前のやつってのも、こうすれば使えるんっすね!!
ありがとうございましたぁーーーーっ!!!

517:507
08/05/10 18:55:18
>>515
あー、そゆことですか
ありがとうございました

518:デフォルトの名無しさん
08/05/10 19:38:35
>>517
C++Builderの入門書じゃなくてC/C++そのものの入門書読むことをすすめとく。
STLもvectorくらいは最低覚えとけ。

519:デフォルトの名無しさん
08/05/13 15:48:44
プロパティエディターを登録しようとしても「'__classid' には VCL 形式のクラス型が必要」となってしまう。

enum TMyEnum {meA = 3, meB = 6, …… };
という型のプロパティを、オブジェクトインスペクタでプルダウンリストから選択して設定できるようにしたい。
ということで、プロパティエディターに TEnumProperty を使って登録しようと思ったのですが、ヘルプを参考に
  #include <DesignEditors.hpp>
  namespace Tenumproperty
  {
    void __fastcall PACKAGE Register()
    {
      RegisterPropertyEditor(__typeinfo(TMyEnum), 0L, "", __classid(TEnumProperty));
    }
  }
とやっても、
[C++ エラー] BinEdit.cpp(52): E2242 '__classid' には VCL 形式のクラス型が必要
というエラーが出て通りません。
インクルードするヘッダを <VCLEditors.hpp> と取り替えたり、両方記述してみたり、
あるいは、「Designeditors::TEnumProperty」としてみたりとか色々と試行錯誤してみましたが駄目でした。
  class DELPHICLASS TEnumProperty;
  class PASCALIMPLEMENTATION TEnumProperty : public TOrdinalProperty
というのは「VCL 形式のクラス型」ではないのでしょうか?

ご指導の程、よろしくお願いいたします。
<(_ _)>


520:デフォルトの名無しさん
08/05/13 16:46:19
すみません。RegisterPropertyEditor のヘルプをよく読んでいませんでした。
エラーが出ていたのは、__classid(TEnumProperty) ではなく、__typeinfo(TMyEnum) の方でした。
TMyEnum はクラスではないので、
  PTypeInfo TypeInfo;
  PPropInfo PropInfo = GetPropInfo(__typeinfo(TForm), "BorderStyle");
  if (PropInfo)
    TypeInfo = *(PropInfo->PropType);
という具合にしないといけないようですが、GetPropInfo がよくわかりません。
ヘルプを見ても引数が void のものしかありませんし、
Win32API の方で GetProp というのが該当する様ですが、こちらに変えてもうまくゆきませんでした。
enum型の型情報ポインタってのは、いったいどうやったら取得できるのでしょうか (´;ω;`)


521:デフォルトの名無しさん
08/05/13 19:02:40
ヘルプに記載はありませんでしたが、
  extern PACKAGE PPropInfo __fastcall GetPropInfo(PTypeInfo TypeInfo, const AnsiString PropName)/* overload */;
こんな関数がオーバーライドされているようでした。
コンポーネント本体のヘッダ、ソースと同じパッケージに突っ込むことで
なんとかこれで「TMyEnum型の型情報ポインタ」とやらを取得できているっぽいです。
これで、プロパティエディタを登録できたはず!
と思いきや、全然反映されていません(´;ω;`)
素のTEnumPropertyじゃ駄目なのかと、継承クラスを作ってもみましたが、やっぱりだめ
  Designintf::TPropertyAttributes __fastcall TAlignmentProperty::GetAttributes(void){
    return TPropertyAttributes() << paValueList << paRevertable;
  }
  AnsiString __fastcall TAlignmentProperty::GetValue() {
    int iValue = GetOrdValue();
    switch(iValue) { 〜中略〜
    default : return AnsiString("dtUnknown");
    }
  }
  void __fastcall TAlignmentProperty::SetValue(const AnsiString asValue) {
    if(asValue == AnsiString("dtLeftTop") ) SetOrdValue(DT_LEFT + DT_TOP + DT_SINGLELINE + DT_NOCLIP);
    else SetOrdValue(NULL);
  }
TEnumPropertyを継承したときのオーバーライドってこれで合ってますでしょうか よろしくお願いします <(_ _)>


522:デフォルトの名無しさん
08/05/17 22:06:01
動的にフォームを出したいのですが、
TfmOption *fmOption = new TfmOption(this);
fmOption->ShowModal();
delete fmOption;

どうもうごきません。

それとモーダルもしたくないのですが、
普通にメインウィンドウと同等のウィンドウとしたいのです。
オプションで初期にはロードしたくありません

523:デフォルトの名無しさん
08/05/18 07:43:32
>>522
TForm::Visibleをチェック。
新規作成したフォームはデフォルト値がfalseになってる。

524:デフォルトの名無しさん
08/05/18 10:04:48
ShowModal();すると、自動的にVisible=trueに設定されるから
Visible=trueは必要ないハズ。
>>522は基本的にOKだと思う。
動かないとは、表示されないという意味なのだろうか。
モーダルにしたくないなら、
fmOption->Show();


525:デフォルトの名無しさん
08/05/18 14:42:51
//---------------------------------------------------------------------------
void __fastcall Tform1::Button1Click(TObject *Sender)
{
*fmOption = new TfmOption(this);
fmOption->Show();

}
//---------------------------------------------------------------------------
void __fastcall Tform1::Button2Click(TObject *Sender)
{
delete fmOption;

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

//ヘッダ
private: // ユーザー宣言
TfmOption *fmOption ;

まず、*fmOptionの*すらわからずやってます。

やりたいことは、オプションのコンポーネントがおおすきるので、
fmOptionの起動に時間がかかります。
それで、exe起動時に起動画面をだし、その間にオプションを出すよていです。
自動生成フォームとして提供したら起動画面がオプションがロードされた後
出てきて意味がないのです。
で、メインフォームのprivate変数にオプション保持用の変数をもって、
ロードしたいのですが、簡単そうでむずかしくて・・・。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4353日前に更新/254 KB
担当:undef