くだすれDelphi(超初心者向け) Part4

このエントリーをはてなブックマークに追加
昨日からDelphi始めてみました。
タイプすると音が出るメモ帳作っています。
音はとりあえずしっかり出るのですが、日本語入力ONにするとだめなようです。
日本語入力ONにしたときのKeyの取得方法はどうしたらいいのでしょうか。

現在の仕様
エディタのOnKeyPressイベントから飛ばして、
if Key = chr(VK_RETURN) then
begin
Mediaplayer1.Rewind;
Mediaplayer1.Play;
end
else
begin
Mediaplayer2.Rewind;
Mediaplayer2.Play;
end;

てな感じになってます。
Enterキーとその他のキーで鳴る音を分けています。
わかる方ご教授お願いします。
>>367
無理と言っておこう。
IME上で未確定の間は、アプリケーションではなく
IMEのプロセスにキーボードメッセージを横取りされている状態なので。
アプリケーション上で如何なるイベントを処理をしようともIME上の入力を感知することはできない。

ちなみにOnKeyPressはIMEの入力を確定した時点で発生する。

例外としてフックなどのAPIを使用すればIMEの入力メッセージを
さらに横取りして擬似的にイベントを発生させることもできるが、
APIの知識がないと極めて危険な技。
何で無理やねんw
しかもフック無用
>>368
レスありがとうございます。
IMEから奪わないといけないんですね

APIが使いにくいと思い、でもDelphiならAPI使わなくても
それなりに作れそうだと思って始めたのですが、
いきなりひっかかってしまいましたか
やはりWinで何か作ろうと思ったらAPIの知識が必要になってきますね…

とりあえず、他の物いろいろ作って修行してまいります
Delphiの限界が垣間見えました
初心者スレに貼り付いてる粘着。
373デフォルトの名無しさん:03/07/31 01:17
Delphiで3Dグラフィックスを表示させたいのですが
OpenGLやDirectXを使えるようにするにはどうすればよいでしょうか
チュートリアル的なサイトを教えていただければ幸いです

ゲ製作をみてQuadrupleD3.00というものを使ってみましたが
不具合が多くドキュメントに不備がありコミュニティが停止状態なので
使い物にならないと判断しました
DelphiXも同じような理由ではずしました

サンプルやドキュメントに不具合が少なくDelphi6Personalで使いやすいものは何かありませんか?
ドキュメント類は日本語か英語でお願いします
ロシア語でいいサイトをみつけたのですがソースが化けてしまって(それ以前に読めませんが)修正が大変だったので(TT
>>373
DirectX SDK落とせばCとVBでサンプルソースがあるから、それ見てこつこつと
やってくしかない。あとヘルプも同梱されてるから一緒に見てね。
>>373
JEDI DirectX9 Headers
http://www.crazyentertainment.net/

VC++とかのサンプルそのまま写して使えるよ
もちろんDelphiの作法が必要なところは適宜脳内変換しなきゃならないけど
(ウィンドウ・メッセージループ→TForm・Application.OnIdle)
書き忘れた。
DirectXのDelphi用pasファイルは、
http://www.delphi-jedi.org/
にあるから落としてね。
>>374-376
即レスありがとうございます
VC++のやり方がほぼそのまま使えるということで助かります
ライセンスもMPLということで扱い易いです

贅沢いうのもなんですがチュートリアルかサンプルはないでしょうか
VCからのコンバート中なんですがもし先人がやっていれば楽したいなと思いまして
とりあえずコンパイルできるところまでいくのに時間かかりそうなものですいません
>>377
だからVCとかのチュートリアルそのまま写すだけだって・・・
ウィンドウはFormが勝手に作ってくれるんだから後は簡単でしょ?
>>375にヒントは書いたんだし

ちなみにあまりに簡単なことなので誰も今更Webで説明したりはしないと思うよ
>>367, >>368
WM_PROCESSKEY を使ってごらん
>>377
VCLでの作法が分からなければ、SDKのようにAPIで組めばいい。
とりあえず、概念を理解するまでサンプル組んでみろ
>>377
サンプルはロシアにあるじゃん
>>367
Application.OnMessage で VK_PROCESSKEY をつかまえて
ImmGetVirtualKey API を使い仮想キーコードを取得する。
どうした?>> 382
>>364βακα..._〆(゚▽゚*)
385355:03/07/31 14:33
>>356>>359
どうもありがとうございました。
この方法(を少しアレンジして)で、うまくいきました。
今後ともよろ
386デフォルトの名無しさん:03/07/31 18:19
TCustomListBox.TopIndexがイマイチよくわかりません。
ヘルプの例を実行したのですけど、項目が入れ替わらないのですけど、どうして
なのでしょうか?

Delphi6のヘルプの例

以下の例では,リストボックス,ボタン,編集ボックスを使用します。
アプリケーションを実行してボタンをクリックすると,リスト内の 3 番目
の項目が最初の項目になり,その項目のインデックス値が編集ボックスに
表示されます。この場合,インデックス値は 2 になります(最初の項目の
インデックス値は 0)。

procedure TForm1.FormCreate(Sender: TObject);

var
Number: Integer;
begin
for Number := 1 to 20 do
ListBox1.Items.Add('Item ' + IntToStr(Number));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.TopIndex := 2;
Edit1.Text := IntToStr(ListBox1.TopIndex);
end;
> 項目が入れ替わらないのですけど

(必要なら)スクロールして、一番上に表示されるだけだよ。
項目を入れ替えるプログラムに見えないような気がする
389デフォルトの名無しさん:03/07/31 18:45
Windowsのゴミ箱にファイルを捨てるプログラムを作成したいのですが、どのようにプログラムしたら良いのでしょうか?
http://www.borland.co.jp/qanda/delphi/d0009408.html
を実行するとKernelの読み込み違反が起きるのですが、
何か間違っているのでしょうか?
>>389
 ま た コ ン ポ ー ネ ン ト か

 という様な、突っ込み来そうだけど
http://www.japan-net.ne.jp/~fermion/ これ使ってみれば?
delphi api specialfolder path
delphi file move
392デフォルトの名無しさん:03/07/31 20:16
>>387
実行して意味がわかりました。
スクロールの表示位置でした。
393デフォルトの名無しさん:03/07/31 20:44
TImageコンポーネントに表示した画像をグレースケールに変換する
方法を教えて頂けませんでしょうか?
394デルφ:03/07/31 20:55
でるふぃって読むのですか?
φって変換できてるのにね
397デフォルトの名無しさん:03/07/31 21:47
>>390
Thanks
いまからやってみます
最小化不可にしているんだけど、
QuickLaunchに入っているデスクトップ(ToggleDesktop)に最小化されてしまう。
そもそもコレはどんな動作して最小化にやってくるのか、
どうやって妨げてやろうか、APIで利用できないものか、
教えてもらえたら大人になれるんだがな。
>>398
メッセージ処理を覚えると吉と言ってみる。
400デフォルトの名無しさん:03/07/31 22:06
>>395
解決しますた
401398:03/07/31 22:09
速いな。
メーセージ処理どころか、フックまでして妨害してるがことごとく失敗。
402デフォルトの名無しさん:03/07/31 22:13
>>401
強敵と戦っているんですね。がんばってくださいね。
403398:03/07/31 22:15
大人になるための戦いだからな。
おまえもがんばれよ。
404デフォルトの名無しさん:03/08/01 01:16
>不具合が多くドキュメントに不備がありコミュニティが停止状態なので
>使い物にならないと判断しました
>DelphiXも同じような理由ではずしました
自分で作れもしないくせに、偉い言われようだなぁ…。
だなぁ。
ミニゲーム程度なら簡単に作れるだろうに。

>とりあえずコンパイルできるところまでいくのに時間かかりそうなものですいません
とか言ってる人には無理だろうけど…。
>>398
>最小化不可にしているんだけど、
>QuickLaunchに入っているデスクトップ(ToggleDesktop)に最小化されてしまう。

システム解析の定石として最小化されないアプリケーションが実在するかどうかを
調べてみては?
> QuickLaunchに入っているデスクトップ(ToggleDesktop)に最小化されてしまう。
これってどういう意味なの?

QuickLaunchのデスクトップって、デスクトップにあるアイコンを表示しているだけだと思うけど。
>>407
だから「デスクトップにあるアイコンを表示しているだけ」を抑制したいんだろ?
PCJapanをみてきました
DelphiでつくられたNASAの科学技術情報システムってどんなものですか?
410デフォルトの名無しさん:03/08/01 09:47
IndyのIdHTTPServerのgetやpostのイベントハンドラはマルチスレッドで動いてるんだろうか。
それとも、イベントハンドラが複数動作するので、シングルスレッドで問題無いわけかな。
詳しい方教えて下さい。
マウスのプロパティで設定されている
ホイールのスクロール量を取得する方法を教えて頂けませんでしょうか?
412デフォルトの名無しさん:03/08/01 10:17
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
413398:03/08/01 11:08
普通のアプリはToggleDesktopで最小化から復帰するときアニメーションが起こる。
HCBT_MINMAXをブロックしちゃったアプリはこのアニメーションがないようだ。
WS_VISIBLEを含み、WS_MINIMIZEDを含まないのに見えない状態だ。
タスクバーを右クリックしたら、メニューと同時にフォームが表示された。

以上のような状況から、最小化できないフォームは、
デスクトップWindowの背面に持っていかれてるような挙動を予想し、
SWP_TOPMOSTを使ってみた。
ついにやったぞ、初勝利だ。

これで次の目標は、任意のフォームをデスクトップWindowの後ろに持っていくことになった。
>>410
タスクマネージャ見て調べてください。

プロセスタブを表示して、
メニューから「表示→列の選択→スレッドの数」にチェックを入れる
>>411
Controls.Mouse.WheelScrollLines
416デフォルトの名無しさん:03/08/01 11:48
>>415
どうもありがd
>>410
IndyのIdHTTPServer はマルチスレッドで動いています。
OnCommandGet イベントなどは第一引数に、そのセッションに関連付けられたスレッドの
ID を持ちます。必要であればこれを使ってセッションを分離することができます。

>>409
>PCJapanをみてきました
>DelphiでつくられたNASAの科学技術情報

http://www.borland.co.jp/delphi/cases/dh004.html
これか?だいぶ古い記事だけど

最新の情報は見つけられないけど、BorCon カンファレンスで NASA の人が
公演しているからまだいろいろやっているみたい。

PCJapan でどうかかれていたのだろうか。
419410:03/08/01 11:58
thanx!>>417

OnCommandGetを追ってみたら、
>function TIdHTTPServer.DoExecute(AThread: TIdPeerThread): boolean;
って感じで素直にスレッドになってますね。

スレッドIDでセッションを分離、、、何か出来るわけですね。
(セッションを分離すると何が良いのか知りたいです)
アメリカではNASAだけじゃなくて、いろいろな研究機関で使用されているよ
>>414
ヴァカ丸だし全開ですね!(ワンダフルゲラ
422410:03/08/01 13:07
再び初心者質問ですが、
TIdHTTPServerで、getメソッドのパラメタに改行コードが入ってるとパラメタのパースに失敗します。
入れちゃ駄目なのかな。どうしよう。
423410:03/08/01 13:28
ファイルからの読み込みデータのパース失敗なので、EOFコードが入ってるかも。
EOFコードが終端を意味するのかな?
424デフォルトの名無しさん:03/08/01 13:50
TPanelを含めて、TPanelに乗っている全てのコントロールを
半透明にする事は出来ますか?
425デフォルトの名無しさん:03/08/01 14:19
Delphiのクラスか関数で、エスケープ文字を使った文字列変換ありますか?
TPanelの載っているフォームを半透明にすれば、TPanelを含めて、TPanelに乗っている全てのコントロールを半透明にする事はできる
>>422-423
getメソッドのパラメーターって何?
パースに失敗するってどの様に?
ファイルからの読込みってどのファイル?

質問内容が理解できません
428424:03/08/01 14:54
>>426
レスありがとうございます。
フォーム全体ではなくPanelのみを半透明にしたいのです。
429デフォルトの名無しさん:03/08/01 14:57
StringGridでセルがクリックされた時に色を付けたいのですが、
どうすれば出来ますか?
SetLayeredWindowAttributesを使った方法では、
現状ではコントロールを半透明にするのは無理。
Delphiの限界が垣間見えました
432デフォルトの名無しさん:03/08/01 15:31
半透明にしたタイトルバーなしフォームをフォームに貼り付けろ
434_:03/08/01 15:36
435410:03/08/01 15:37
>getメソッドのパラメーターって何?

server側の?A=A&B=...という感じのパラメタです。

>パースに失敗するってどの様に?

server側のRequestInfo->Params->Textが空になります。

で、HTTPEncodeすると、何とか動作するようになりました。
HTTPEncode時に、「=」もエンコードすべきなのか、対象外にするのか、仕様はどうなんでしょ...
ググルとかでは、「=」はそのまま見えてますが、HTTPEncodeすると「%3」になりますね。
436410:03/08/01 16:44
分かりました。
「&」なんかは、特殊な意味があるので、ASCIIではないのに、特別にエンコードしないことが許されてるみたいですね。

で、次に分からないのですが、IdHTTPServerで関係無いHTTPパスを指定された場合、「204 - No Content」エラーとすべきか、処理せずに次のアプリケーションサーバに制御を渡す(出来なさそう)のか...
437デフォルトの名無しさん:03/08/01 18:19
クイックレポートをDelphi7に入れたいのですが、どこかに落ちていませんか?
438デフォルトの名無しさん:03/08/01 18:21
巨乳美女、女子校生のモロ見え画像満載!!
無料画像で観れるよ
アクセスして損はなし!!
http://www.cappuchinko.com/
Win32MajorVersionやWin32MinorVersionといった変数があるなら、HELPに載せておいてよ。
Professionalなら載っているかもしれないけどさ。
Personalだと、他にも使えるのにHELPに載っていない変数や関数があるのかな?
作ったゲームを画面全体(タイトルの入ったバー?も無しで)に表示するにはどうすればいいですか?
BorderStyle := bsNone;
BoundsRect := Rect(0, 0, Screen.Width, Screen.Height);
>>441
どこに貼り付ければいいんですか?
自分なりに考えてやってみましたが、エラーが起きまくりです。
Drag and Drop について質問

TListBox や TTreeView, TListView 等のコンテナの中にアイテムがあるような
コントロールのアイテムをドラッグした時にそのドラッグしているアイテムを
確定する方法で悩んでいます。例えば、TTreeView のアイテムをドラッグすると、
DragOver が発生しますがパラメータに入ってくる Source は常にその
コンテナコントロールで、アイテム自体ではないようです

じゃぁ、Selected を見ればいいんじゃないか?と、思いましたが複数選択した場合
どうしたものか…う〜ん、みなさんはどうやってますか?

あと、DropTarget なるプロパティがありますが、これはドラッグアンドドロップ
操作が終了した時点で設定されるものですか?
複数選択されてたって、ListBoxのSelectedはインデックスで項目ごとの選択状態調べられるし、
ListViewはListItemの、TreeViewはTreeNodeのSelectedを調べればいいだろ。

質問したいことあるんですが、ここで解答している人って乱暴な言葉使いしかできないんですか?
それとも、ここは隔離スレですか?
気にする奴は質問すんなハゲ
夏まっさかり
ナイーブなお子ちゃまがいらっしゃるようでつな。
449443:03/08/01 21:21
要はドラッグしているアイテムを特定する方法に Selected 以外に
ありますか?あるとしたら、どの様な方法でしょう?

あと、ドラッグアンドドロップのロジックを組んだことある人は、
やはり Selected を見て、ドラッグアイテムを特定していますか?

上記、2点の方法でそれぞれメリット、デメリットとか「こんな不具合があり得る」
みたいな事教えて頂けるとありがたいです
Selectedを見てる。それ以外は知らない。
451デフォルトの名無しさん:03/08/01 22:27
コンボボックスの質問です。
知ってる人いたら原因教えてください。

TInputComboBox = class(TComboBox)
private
{ Private 宣言 }
protected
{ Protected 宣言 }
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
public
{ Public 宣言 }
published
{ Published 宣言 }
end;

procedure TInputComboBox.WMSetFocus(var Message: TWMSetFocus);
begin
showmessage('setfocus');
end;

こんな継承クラスを作ってフォームに貼り付けたとします。
tabでフォーカスを移していった時にはダイアログが出ますがクリックした時に出ないのは
当たり前ですか?フォーカス移ってるんだから出てほし〜なと思うのですけども。
>>451
WM_SETFOCUS のヘルプ読んでみ?
キーボードって書いてあるが

> WM_SETFOCUSメッセージは、 ウィンドウがキーボード フォーカスを受け取った後に送られます。
スタイルによるけど、コンボボックスは中にエディット持ってるから、
クリックしたときはそっちに直接フォーカスが移ってるんだろ。

例えばcsDropDownListとかにすれば、エディット持たないから
クリックでもメッセージが出る。
454451:03/08/01 22:54
452さん、453さん ありがとです。

ちょっとテストをしてみました。
同じようなものをTEditで作成して検証です。
マウスクリックの場合でもTEditベースだとダイアログが出ました。
(そしてフォーカスの奪いあいで止まらなくなる)
WM_SETFOCUSはフォーカスが移ればメッセージは投げられているっぽいです。
ごめんなさい>452さん

453さん説で内部的にどうなってるのか確かめてみます。
ヒントありがとでした。
456デフォルトの名無しさん:03/08/02 00:00
質問なのですが、
別のアプリケーションのボタンをクリックしたいのですが、
どのようにすればよいでしょうか。
>>442
どんなエラーが出たか書いてみよう
>>442
アプリケーションの新規作成でなにもないフォームにボタン一個置いて、
そこのクリックイベントに>>441の2行書き、
実行して、ボタンクリックしたら
>>440の思惑通りになりませんか?
>>456
mouse_eventとか
SendMessage(ボタンのハンドル, BM_CLICK, 0, 0);
>>456
「他のアプリケーションのハンドルを得る方法」は分かりますか?
それさえ分かれば後はなんなりと。
>>460
ウィンドウクラス名か、ウィンドウのタイトルでFindWindowする。
ウィンドウクラス名は、Spy++とかで調べられる。
462460:03/08/02 00:16
>>461
えっと…。オレに教えてくれても…(藁
463456:03/08/02 00:21
>>460
電卓を開いて、ソレを最小化
というのは下記サンプルが見つかったのですが、
それの中にあるボタンなどを特定がわからないです

var
hCalc: HWND; {ハンドル}
begin
hCalc:=FindWindow(nil,'電卓'); {電卓のハンドルを取得}
SendMessage(hCalc,WM_SYSCOMMAND,SC_MINIMIZE,0); {最小化}
end;

>>459
さんでいうところの、「ボタンのハンドル」を知る方法が分からない状態です

>>461
spy++というのが、ボタンのハンドル取得方法ということでしょうか?
464456:03/08/02 00:29
すみません
>>463
でのサンプルページに、ボタンのハンドル取得のサンプルもまんま表示されていました。
大変失礼いたしました。アドバイス、ありがとうございました
(456書いてたときは、FindWindowすら知らなかったです)
>>463
勝手に人のアプリを自動制御されたら困る。君は困ることにならんか?

自分で作ったアプリを自分で制御するならどうにでもなるだろ。
子のハンドルを探す。
467456:03/08/02 00:44
>>465
えーと、具体的にしたい作業は
「あるソフトのエディタ欄に文字を入力」
「登録ボタン」クリック
「次の文字を入力」「登録」・・・
という手作業を自動化できるかなと思いまして。
>>467
Windows3.1には標準でそういうツールが付いてきたんだけどな。(単なるマウスKBの記録再生だけど)
スクリなんとかっていうソフトもあったけど、もう出ていないみたいだな。
参考になりそうなAPI
FindWindow() mouse_event() keybd_event() IsWindowEnabled() IsWindow()
GetActiveWindow() GetWindowText() GetGUIThreadInfo() SendInput()
469山崎 渉:03/08/02 02:03
(^^)
>>467
http://www.vector.co.jp/soft/win95/util/se109671.html

こういうソフトのほうがいいでない?
>>470
ロケットマウスか?
と、思ったら違った…。
えーっと、質問です。
NKF32.DLLを使って文字コード変換するときに、
はじめの文字が英語だったらうまく変換できないとかは、
どうしたらうまくいくようになるのでしょうか?
>>472
それは nkf32.dll の問題ではないかな?
ま、くだすれだし。

nkf32 の NkfConvert の第一引数に S とか E とかを指定して、入力ファイルのエンコーディングを
明示指定してあげれば良いかと。

ところで、nkf DLL と、その Pascal インターフェースソースは複数の人が作っているんだけど
それぞれ誰のを使っているの?
475472:03/08/02 12:22
えっと、こんな感じでやってます。

SetNkfOption('-s');
Memo.Text:=NkfConvert(Memo.Text);

うーん、誰のでしょう??
知るかよ
この帽子、ドイツんだ??
478440:03/08/02 15:30
>>458
出来ました。ありがとうございます。
ボタン無しでゲーム起動から終了まで、表示することは出来ませんか?
オブジェクトインスペクタにBorderStyle欄があろうに。

つーか、ボタンがイヤならFormCreateに書けよ。
>>478
おまえは、聞く前に調べろ
解答者の質悪ッ

人間的に駄目な奴ばっかり(藁
( ´,_ゝ`)プッ
483440:03/08/02 17:39
>>479
オブジェクトインスペクタのBorderStyleは分かるのですが、

BoundsRect := Rect(0, 0, Screen.Width, Screen.Height);

の部分が分かりません。FormCreateも良く分かりません。
modとdivって何の略?
moduloとdivisionだと思う
486デフォルトの名無しさん:03/08/02 18:12
【徹底的】プログラマーが語るviとemacs 4【バトル】
http://pc.2ch.net/test/read.cgi/prog/1059814696/
>>483
分からない単語は検索するなりして分かるように努力すれば?
488440:03/08/02 18:25
もうわかったから。役立たず君。
489デフォルトの名無しさん:03/08/02 19:04
TWebBrowserってGIFの特許問題に引っかかったりするの?
>>490
MicrosoftはIEコンポーネントを使うならば問題無いと言っていた。
Unisisはコンポーネントを組み込んだアプリ毎に使用料を払えと言っていた。
どっちにしろもうじき特許の有効期限が切れるからキニスンナ
Unisys はドキュソって事でFA
TProgressBar の中に反転色で文字列を描画したいのですが、
どうしたら一番スマートでしょうか?
文字列には、例えば作業進行度などを「〜%」のような形で
表示したいと考えています。
>>493
TProgressBarにTLabelを乗せれば良いだけかと。
Label1:=TLabel.Create(ProgressBar1);
Label1.parent:=ProgressBar1;
TLabel.Transparent:=true;
TProgressBarを継承してSetPosition辺りをoverrrideしてパーセンテージと
進行度が常に一致するようコンポーネントを作ると良いのではないかと思われる。
それだけでは反転色にはならないだろう。
WM_PAINTで描画するというベタな方法が   …ベター
てゆうか、sampleタブにズバリのコンポーネントが、、、
漏れのしゃれが寒さを増した
>>498
(ノ∀`)アチャー
質問なのですが、
TMemoコンポーネトで、最初の行にカーソルを移動することはできますか?
できますよ。
ありがとうございました
Memo1.SelStart := 0;
ありがとうございました
ありがとうございました
506472:03/08/03 15:09
ありがとうございました

















                                ぬるぽ
世界が平和になりますように
508493:03/08/03 20:49
レスありがとうございます。
書き方が悪かったようで申し訳ないのですが、
表示するのは作業進行度とは限らず、
とにかく文字列を表示したいので、
TGauge を使う方法は利用できませんでした。

WM_PAINT を使う方法も考えましたが、
なんだかDelphiらしくない気もしています。
GroupBoxとRadioButtonの合わさったコンポーネントってありませんか?
GroupBoxのキャプションの隣にRadioButtonがある、みたいな。
*やさしい*スレッドって、どうなったのですか?終わった?
>>510
そうそう、おれも気になってた。
>>510
過激派によって消された。
>>510
夏だし。
質問です。
Button系のコンポーネントを利用して、ボタンが押されている状態を取得する方法がわかりません。
具体的な処理は以下のとおり。
マウスダウンにより、ボタンが押されるとタイマーを起動し、一定間隔で処理を行います。
そのマウスが離されるとタイマーをストップします。
ただし、マウスボタンが押されている状態で、カーソルがボタンから離れるとタイマーをストップ。
その状態で、カーソルがボタンに入るとタイマーを起動。
要するに、ボタンの浮き沈みと同じく、タイマーを制御したいのです。
できればフォーカスを受け取らないTSpeedButtonか、TToolBarのTToolButtonを利用したいです。
このような処理を行うにはどうすればよろしいのでしょうか?
よろしくおながいします。
こういうことが出来るかどうかもわからないんだけど、
他人の作ったDLLを、自分のEXEに取り込んじゃって、
単一ファイルで配布したい。

理由は、インストーラなしである以上、ファイル構成を単純化したいから。

何とかなるかい?
>>514
Windowsはその状態を教えてくれない。
よってDownプロパティは望み通りには動作しないため、
自前でマウスメッセージを処理すること。
>>515
なんとかなるよ。
518begin 名無し; end;:03/08/03 23:27
質問させて下さい
ブラウザ機能を用いて指定ページを表示完了したら次のページを開く
と言ったようなものを作りたいと思っています。

自分で考えたことは、WebBrowser1.Busyを用いて、状態を判断して見ようと思ったのですが
無限ループ状態になり、処理が進んでいません。
読み込み処理を実行しつつ、完了するのを待つにはどうしたらいいんでしょうか。
↓現在この状況

begin
 for i1:=0 to i2 do
 begin
  Edit1.Text := 'http://www.xxx.yy.zz/';

  while WebBrowser1.Busy = True do
  begin
   (ここに何か入れるべき…?)
   end;
 end;
end;
>>514
MouseDown
MouseUp
MouseEnter
MouseLeave
で出来る
520 :03/08/03 23:59
ドキューンメソト コソプリート イベソト ジャ ダメナノカイ?
>>520オマエ、ドコカラカキコシテルンダ?(ワライ
522begin 名無し; end;:03/08/04 00:17
その場合は、iをグローバル変数にして、イベント発生でiを+1して
次のを実行…ってのを繰り返しという手順ですよね
少しやってみます。

サンクスーコ
すぐバグだとか騒ぐのもなんですが、
Breakプロパティでメニューを二列に表示すると、
二列目に使っている”-”の横線描画がバグっちゃってるみたいなんだけど、
回避できないですか?
>>522
グローバル変数なんか使うよりイテレータとか使う方が良いと思うけど。
>>516 >>519
ありがとうございます。
MouseEnterでやることにします。
526523:03/08/04 01:21
イメージリストも指定した場合の描画です。
二列目以降のセパレーターが一列目までかぶって描画されます。
527begin 名無し; end;:03/08/04 01:37
>>524
イテレータ…聞いたこと無かったので調べてみましたが
RubyことばかりでDelphiは見つからなかったです。
どういう事か何となくわかるような、わからないような…

この概念で考えたこと無いので実際どのように使うのかがちょっと
わかりません。
できたら簡単な具体的な使用例的な物を見せて欲しいのですが
よろしくお願いします
528_:03/08/04 01:42
ありがとうございました
デザパタの本を買え
>>527
関数抜けないとbusyが解除されないと思われ
イテレータは関係ない
532デフォルトの名無しさん:03/08/04 18:13
Delphiスレで聞く内容ではない気がしますが、開発ソフトがDelphiなので、
ここで質問させて下さい。

売る値段によって、機能の数や動作が変わってくるようなソフトを作る場合、
1.全てのソースをそれぞれのバージョン毎に分ける
2.同じ動きや似たような機能のソースは共有して、大幅に違う所はソースを分ける
3.全てフラグなどで切り分け、ソースは全て共有する
4.その他

のどれが良いですか?
とりあえずバージョンは二つだけなのですが、後々バージョンが増えるかも
しれませんし、バージョン毎に必要な機能も現時点では決定していません。
もしかしてDelphiだとそのような管理をする機能が付いていたりしますか?
533あぼーん:あぼーん
あぼーん
534_:03/08/04 18:15
4.その他
>>532
取らぬ狸の皮算用っていうかなんというか
537532:03/08/04 18:39
>>536
ようするに仕様がコロコロ変わるんでつ(T^T)
継承をつかえ。
539532:03/08/04 19:43
なるほど、仕様が変わるたびに継承で対応するわけですね。
>>532
好きなようにやってくれ
541532:03/08/04 19:50
冗談ですよ。つまらない奴ですね。
542532:03/08/04 20:50
うっせークズ共。とっとと、答えろや!
543デフォルトの名無しさん:03/08/04 21:05
PCJapan:2003年8月号 - 特集4:Windowsカスタマイズツールを作ろう

PCJの多くのユーザーが何らかのカスタマイズツールを使ったことがあるだろう。
そうしたツールを使っていて,「この機能がほしい」,「このインターフェイスを変え
たい」などと感じたことはないだろうか。カスタマイズツールを自分でプログラミン
グできれば,本当に欲しい機能を備えたツールが得られる。この特集では,付録
CD-ROMに収録したプログラミングツールを使って,オリジナルのカスタマイズツ
ールを作るテクニックを紹介する

Part1 簡単にプログラムを作れるDelphiをマスターしよう
Part2 プロが教えるカスタマイズツール作成テクニック

http://www.zdnet.co.jp/magazine/pcjapan/0308/sp4/
544デフォルトの名無しさん:03/08/04 21:06
>>543
簡単じゃねーやい!
>>543
Part2は嫁ないの?
546デフォルトの名無しさん:03/08/04 21:09
>>545
Coming soon.
※Part2は,現在発売中のPCJapan 2003年8月号の誌面でご覧いただけます
(バックナンバーのオンライン購入はこちらから)
http://store.sbpnet.jp/bm_browsing.asp?page=0&browsing%5Ftype=&product%5Ftype%5Fid=40&product%5Fsubject%5Fid=%7B31B6F187%2D72B3%2D4943%2DB34A%2DC32EF8DC6CD1%7D
そうだ!簡単じゃないぞ!
ユーザーからはあれ付けてくれこれ付けてくれって言われるし、
新OSには対応させなきゃならないし。

もちろん自分で使うってなら別だが。
>>543
気づくの遅せーな
550デフォルトの名無しさん:03/08/04 22:45
これからも>>549みたいな夏厨が押し寄せてきそうな予感
ネトランとPCJapanどっちが厨読者多いだろうか。
NASAのシステムよりも窓の手がDel製と
いった方がよほど説得力があると思うのだが…
窓の手など一般人からみればしょぼいヲタツール
おまいらからみたハッキングツールと同じような目でみられてるので
マイナスイメージしかつかねーよ
554デフォルトの名無しさん :03/08/04 23:13
WINDOWS をBASICでつくることはできますか?
WINDOWSという名のソフトはBASICでも作れますが?
556デフォルトの名無しさん:03/08/04 23:16
そうなんですか? どんな感じになりますか?
BASICになります
558デフォルトの名無しさん:03/08/04 23:41
    ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、 
DLLを実行ファイルのフォルダの中に作成したサブフォルダに入れ、
なおかつ external で静的にロードすることは可能でしょうか?

[Hoge]
  ├ hoge.exe
  └ [DLL]
     ├ huge.dll
     └ func.dll

可能であれば、具体的にはどう記述すればよいでしょうか?
external 'DLL\huge.dll' を試してみましたが、アクセス違反が起こりました。
DLL のフルパスで、path に加えても?
>>560
path といいますと、環境変数の事でしょうか?
環境変数は弄らないようにしたいのですが…
もし弄らないと出来ないのでしたら、素直に諦めます。
>>561
なんでやねん
コンポーネントスレってこの板にある?
【大量・便利】Delphiコンポーネント【再利用】
http://pc2.2ch.net/test/read.cgi/tech/1051802300/
>>559 あたり

procedure foo; external 'test\bar.dll';

でできたけど?(Windows 2K)Windows ローダーが DLL を見つけられない場合は
「hoge.exe - DLL が見つかりません」って表示するはず。

「アクセス違反」ということは、DLL はロードできているということで
原因は別にあるのではないかな?
566デフォルトの名無しさん:03/08/05 09:47
現在フォームに表示をしている、レコード1件のみをQuickReportで
プレビュー及び印刷をしたいのですが、どの様にすれば宜しいのでしょうか?
Delphi6上で、TTableを使ってDBを構築しております。

恐れ入りますが、諸先輩方の知恵をお貸し頂けますでしょうか。
それではよろしくお願いいたします。
>>566
コード書かずに済ませたいなら...

1件だけなら DB 系 QReport コンポーネントを使わないで処理するってのは?
TTable の変わりに TQuery で、ひとつのレコードだけ表示するってのは?
TTable の Filter を設定して、ひとつのレコードだけ表示するってのは?
568デフォルトの名無しさん:03/08/05 11:19
TNMFTPのインストールの仕方を教えて下さい。
当方Delphi7 Professionalです。
宜しくお願いします。
569566:03/08/05 11:34
>>567
さっそくのレス、ありがとうございます。
現在構築済みの物に追加して、1件のみの印刷をしたいと考えております。

TTableとTQueryを並行に運用出来るのか私には分からないですが
3番目のFilter設定は使った事がありますので、カレントレコードに限定する
手法が分かれば、私の稚拙な力でも出来そうです。

この点で質問なのですが、実行中の画面上ではDBの抽出(Filter)が
行われた事に気付かせずに、この手の作業は可能なのでしょうか?
570559:03/08/05 12:27
>>565
(´Д`;)
どうやら、原因は別の所にありそうです…。
現在DLLをロードするDLLを作ってるのですが、
それは関係ないですよね…。

[hogehoge]
    ├ hoge.exe (huge.dll をロードする実行ファイル)
    └ [DLL]
       ├ huge.dll (現在作成中のDLL)
       └ [huge]
          └ func.dll (利用したいDLL)

procedure foo; external 'DLL\huge\func.dll';
CDデータベースにCDプレイヤー機能をつけて、CDドライブに入っているCDの情報を表示させたいと思っています。
いろいろ調べて、GetVolumeInformationの、SerialNumberを使えばいいのかと思いましたが、
たまたま持っていた二枚の同じCDで試してみるとSerialNumberが異なりました。
こんなときに使える関数、方法、サイトなど教えてください。お願いします。
572571:03/08/05 16:04
すみませんちょっと変な文章でした・・・。
質問は、「音楽CDのタイトルを判別する方法を教えてください」です。
Delphi6Personal使ってます。よろしくお願いします。
Delphiでビートマニアみたいなものって作れますか?
SerialNumberとそのCDデータベースで実現できます
575571:03/08/05 17:18
レスありがとうございます。
しかし、私が持っていた二枚の同じタイトルのCDは、異なるSerialNumberを持っていました。
同じタイトルの音楽CDに共通のID番号の様なものがあればうれしいんですが・・。
>>573
作れますよ。コナミさん
だろうね
5785777:03/08/05 20:50
誤爆
TListViewに重複項目を出さないようにするにはどうすればいいですか?

procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
var
i:integer;
begin
for i:=ListView1.Items.Count-1 downto 0 do
if ListView1.Items[i]=ListView1.Items[i+1] then
ListView1.Items[i+1].Delete;
end;

ソートしてやってみてもダメだったぽ(´・ω・`)
できればSubItemの重複でできるようにお願いします。
580ダサダサコーディングで良ければ:03/08/06 00:51
一旦、TStringlistに全部移してソートして戻す。
はい次↓
>>580
( ´・∀・`)やってみます
582580:03/08/06 01:02
よーく読見返してみたけど、>>580はダメだな(藁
忘れてくれ。
1行なら問題無いと思うが。
ダサイけど(藁
>>579
function MatchListItem(L1, L2: TListItem): Boolean;
var
  I: Integer;
begin
  Result:=false;
  if L1.SubItems.Count<>L2.SubItems.Count then Exit;
  if not(SameText(L1.Caption, L2.Caption)) then Exit;
  Result:=true;
  for I:=0 to L1.SubItems.Count-1 do
  begin
    if not(SameText(L1.SubItems.Strings[I], L2.SubItems.Strings[I])) then
    begin
      Result:=false;
      Break;
    end;
  end;
end;
続き
procedure TForm1.Button1Click(Sender: TObject);
var
  I, n: Integer;
begin
  I:=0;
  while I<ListView1.Items.Count do
  begin
    n:=I+1;
    while n<ListView1.Items.Count do
    begin
      if MatchListItem(ListView1.Items.Item[I], ListView1.Items.Item[n]) then
      begin
        ListView1.Items.Delete(n);
        Dec(n);
        Dec(I);
      end;
      Inc(n);
    end;
    Inc(I);
  end;
end;
>>570
まずはバグの切り分け。
DLL 名にパス名を付けない状態で正しく動くことを確認するのが先でしょう。
次に、path 環境変数に置き先ディレクトリを追加した状態でテスト。これで各 DLL が
異なるディレクトリにあっても動くかどうかを検証。
最後に external 指定にサブディレクトリを追加。

こんな順番でがんばって
>>571
CDDBみたいに、MSFアドレス、トラック数、各トラックアドレスなどから
CDを判別するのはどう?
var
Memo : array[1..100] of TMemo;
i : integer;
begin
for i := 1 to 100 do
Memo[i] : =T Memo.Create(Memo[i]);

これをやるとデフォルトプロバティが無いというエラーで怒られますが
どうにか簡単に作る方法は無いでしょうか?
Memo[i] はこれから作るところなんだから
>Memo[i] : =TMemo.Create(nil);
はエラーになるでしょ?

>Memo[i] : =TMemo.Create(nil);
または Memo.Create(self);
かな?

>>588
レスありがとうございます
試してみたところ同じエラーがでてできませんでした
エラー文を正確に書くと
>このクラスはデフォルトプロパティを持っていません
です
590571:03/08/06 05:34
>>585レスありがとうございます。
CDDBでもそのように判別しているということは、タイトルごとに共通なIDは存在しないようですね。
取得しやすい情報を組み合わせてやってみようと思います。
ありがとうございました。
591571:03/08/06 05:35
>>586さんでした・・・。
ありがとうございました。
592デフォルトの名無しさん:03/08/06 07:02
初心者小僧です。

Indyコンポーネントの使い方とか、Indyコンポーネントのチップス(これを行うには
このコンポーネントのこのメソッドを利用するみたいな)とかを紹介している
良いWebサイトをあれば教えてもらえないでしょうか?
>>579
なぜにOnChange?

Captionでソートしてあれば
for i := ListView1.Items.Count-1 downto 1 do
 if ListView1.Items[i].Caption = ListView1.Items[i-1].Caption then
  ListView1.Items[i].Delete;

SubItemsでやるならCaptionをSubItemsに変えればよろし。
SubItemsでソートしてから動かせよ。
>>583-584 >>593
(`・ω・´)ゞ
ファイラーみたいなの作る時、みんなコンポーネント何使っているの?
SamplesのShellListViewコンポーネントとか使うとFD見に行って、
ガコガコ鳴って五月蝿いんだけど…(;´Д`)
>>595
TListBoxをOwnerDraw。
俺はListviewをオーナードローとオーナーデータ。
ORTUS SHELL COMPONENTSを使ってる
自分専用だしね
ttp://www.ortus-software.com
>>587
メモコンポを100個動的に作るということですが
まさか100個同時には画面表示できないでしょうし….

もしかしたら2ちゃんねる専用ブラウザのように
複数のテキストを切り替えて表示したいのかもしれませんが,

こういう場合は各テキストの保管はとりあえず文字列変数のの配列か何かにして,
そしてテキストを表示するためのコンポ(コントロール)は1個だけにして,
アクティブなテキストを切り替えるたびに内容をコピーするのがよいと思います.

>>592
日本語ヘルプ
http://www.borland.co.jp/delphi/del7docup.html
Monazilla.org(w>資料室(メンテナンス中)
http://members.jcom.home.ne.jp/monazilla/document/index.html
Altキーの入力を無効にするにはどうしたらいいんでしょうか。
602595:03/08/06 16:48
やっぱ、自前の人もいるのですな…
すばらし〜コンポーネントがどっかでフリーでソースつきで無いかなぁ…。
>>602
これは?
http://www.turbopower.com/products/shellshock/

フリーでソースつき
604595:03/08/06 17:39
>603
おーおー!
そういえば以前MLでもTurboPower社の話が出てましたな!
元が商用だけに期待できますな!!( ̄▽ ̄)
「会社閉めるからsourceforgeに譲るよ」みたいなことが書いてあるな。
webサイトみただけじゃファイルがどこにあるか分かりづらいので
ttp://sourceforge.net/project/showfiles.php?group_id=71005&release_id=137049
606デフォルトの名無しさん:03/08/06 18:30
>>600
ダウンロードします、ありがとうございました。
さっさと>>601の質問に答えろボンクラどもが
608デフォルトの名無しさん:03/08/06 21:58
リポジトリへ登録しまくっていたプロジェクトを
フォルダー毎コピーして、新しいプロジェクトを作成して修正していました。

そして、フォーム上のListViewから1項目削除しようとすると、

別のフォームから継承されたコンポーネントを含んでいるため削除できません。

とエラーが出て削除できないのですが、プロジェクト内を検索してみても
継承されたコンポーネントなんてありません、何処かに前のプロジェクトの
リポジトリ情報でも記録されているのでしょうか??
>>607
もうちょっと具体的に言わないと。
「これこれこういう機能を無効にしたいのでこのコンポーネントでALTキーを無効に出来ませんか?」みたいな
>>609
Alt+F4を無効にしたいのです。
ジョークソフトを作っているので。

ちなみにAlt+Ctrl+Delの無効化はSystemParametersInfoでできました
Alt+F4に別の機能を割り当てる
三つ簡単な質問あります。

shelltreeviewとfilelistboxのリンクの仕方

shelltreeview、filelistboxで選択したディレクトリの場所とファイル名の取得

上にありましたがfilelistboxのMaskを"複数"にしたい場合

超初心者ですんません・・
delphiで作ったアプリケーションで
別のプログラム(たとえばword)を動かせるのですか?

実行ボタンを単純に一個作って、ボタンを押すとword.exeを起動(その後テキストを貼り付け、保存終了をする予定)。

秀丸マクロではなく、delphiで作りたいのですが・・・
615デフォルトの名無しさん:03/08/07 02:44
>>613
ShellListViewなら ShellTreeViewのShellListViewに設定するだけなんだけど。
>>614
出来ます。頑張って調べてくださいね。
>>611-612
ありがとう!
618デフォルトの名無しさん:03/08/07 12:42
JoyPadからの入力を受けるのにjoyGetPos,joyGetDevCapsなどを
使えばいいということは分かったんですが、
引数がよく分かりません。

引数はどのようにすればよいのでしょうか?
DirectInput使いなよ。
620デフォルトの名無しさん:03/08/07 13:00
DelphiでTCP/IP通信をモニターするプログラムを作りたいのですが、
ポートを設定せずに通信をモニターするにはAPIとか使わないと駄目ですか?
621613:03/08/07 14:15
>>615
ありがとうございます!
これを大きいアイコンではなくて一覧リスト表示したいのですが・・
あと、ディレクトリの場所とファイル名の取得はどうしたらよいでしょうか?
622613:03/08/07 14:24
>>621
621を訂正します・・

ドライブコンボボックス,ファイルリストボックス,
およびディレクトリリストボックスでのディレクトリの場所とファイル名の取得はどうしたらよいでしょうか?
それぞれのドライブ、ディレクトリ、ファイル名をeditに出力したいのですが・・
FormのParentFontって、何を親にしてるの?
効いてない気がするんだけど。
Parentがnilなら意味ないよ。
FormにForm埋め込むと効いてくる。
効いたよー効いたんだよー
>>621
ViewStyleをいじる
ってこの質問却下かよ・・・
>>618
丹念に検索すれば必ずサンプルが見つかるハズだよ。
オレも昔、探したし。
ヒント:
「JOYSTICKID1」、「TJOYINFO」、「TJOYCAPS」
うまく説明出来ないんですが
なにかのソフトでよくショートカットキーの割り当てをするとき
例えばキーボードのCtrl + S を押せばCtrl + S が表示されるってのがありますよね
あれをdelphiでやりたいんですがそういうコンポとかありますか?
case文の中にRandom関数を入れると
初期化されない場合があると言われて困っています。
どうしたらいいのでしょうか?

簡略化してますがこんな感じです。
a := 1;
Randomize;
case a of
1: b := Random(100)+1;
end;
ShowMessage(IntToStr(b))
a := 1;
b := 1;
Randomize;
case a of
1: b := Random(100)+1;
end;
ShowMessage(IntToStr(b));

でええんでないの?
>>630
なるほど、たったそれだけのことだったんですか。
ありがとうございました。

>>628
こういうこと?
http://www.borland.co.jp/qanda/delphi/d0002346.html
>>628
THotKeyを使うってことではないでしょうか?
なんでアイツ助けた!
634633:03/08/08 09:10
ごめん、誤爆した。↑
>>631,>>632
ありがとうございました
StatusBar1のPanels[0]のTextの2バイト文字の先頭1文字を消したいのですが
↓のでは消えてくれません。どこがわるいのでしょうか?

Bar := StatusBar1.Panels[0].Text;
Delete (Bar,2,2);
>>636 頭。
>>636
var
  S: String;
  L: Integer;
begin
  S:=StatusBar1.Panels[0].Text;
  if 0<Length(S) then
  begin
    L:=1+Ord(IsDBCSLeadByte(Byte(S[1])));
    Delete(S, 1, L);
    StatusBar1.Panels[0].Text:=S;
  end;
end;
639デフォルトの名無しさん:03/08/08 11:04
DelphiでHORBは使えますか?
640デフォルトの名無しさん:03/08/08 12:16
コードエディタのしおりは保存できないの?
641デフォルトの名無しさん:03/08/08 12:27
タイトルバーのクリックを検知する方法おしえて下さい。
よろしくおねがいします。

642デフォルトの名無しさん:03/08/08 12:31
643デフォルトの名無しさん:03/08/08 12:53
TTreeNodeをVisable:=Falseみたいに存在してるんだけど
見えない。ってじょうたいに出来ますか?
ノードが折りたたまれて見えないのとはまた別の意味で。
644デフォルトの名無しさん:03/08/08 14:15
123456789を123,456,789みたいにしたいけどできないぽ(´・ω・`)
var
ListItem: TListItem;

ListItem:=Items.Add;
ListItem.Caption:=SearchRec.Name;
ListItem.SubItems.Add(Format('%10.0n', [(SearchRec.Size + $3ff) shr 10]));
ListItem.SubItems.Add(DateTimeToStr(FileDateToDateTime(SearchRec.Time)));

これでやると(%n使うと)エラー吐いて死んでくれます。
どうすればよろしですか?
>>644
ヘルプの%nの説明に、引数は浮動小数点値でなくてはならないって書いてる。
646デフォルトの名無しさん:03/08/08 14:32
ShellListViewで、カラムをクリックしたときにファイルサイズや日付でソートするには
どうしたら良いのでしょうか?
いろいろ見てみたのですが解りませんでした…(汗)。
647デフォルトの名無しさん:03/08/08 15:00
Formに乗っている全てのコントロールを強制的に
再描画させるにはどうしたら良いでしょうか?
Form.Refresh;
>>636
× Delete(Bar, 2, 2)
○ Delete(Bar, 1, 2)

文字列の先頭が2バイト文字でその1文字を削除する場合は
先頭の2バイト(1バイト目から2バイト分)を削除しなければいけないのですから,
Delete(Bar, 1, 2) が正解となります.
文字列の先頭が2バイト文字とは限らない場合は
>>638のように1バイト文字なら1バイト,2バイト文字なら2バイトを削除するようにするか,
あるいはワイド文字列を使います.

var
ws: WideString;
begin
ws := StatusBar1.Panels[0]; // ワイド文字列に変換して代入されます
Delete(ws, 1, 1); // ワイド文字列版のDelete手続き
StatusBar1.Panels[0] := ws; // 通常の文字列に変換して代入されます
end;
650デフォルトの名無しさん:03/08/08 17:37
Office2000 professional、Delphi6 personalを持っています。
データベースを作るとして

1)前者で作ると、ACCESSの入ってない環境では使えない。
2)Delphiで作ると自立した?アプリケーションが作れるので、多くの環境で
  使えるが、personal版ではDBは作れない。

という理解でよろしいのでしょうか?
>>645
とりあえずエラーは吐かなくなったので試行錯誤してみます
652644:03/08/08 17:40
>>645
ぁ、できました。どうもありがとうございました
WebBrowserコンポーネントを使ってタブブラウザを
つくっていますが、キャッシュを使用しない更新は
var
i: integer;
Level: OleVariant;
begin
if (MDIChildCount > 0) then
begin
with MainForm do
for i := MDIChildCount-1 downto 0 do
if TIEWindow(MDIChildren[i]).WebBrowser1.Document <> nil then
begin
TIEWindow(MDIChildren[i]).WebBrowser1.Refresh2(Level);
end;
end;
end;
でいいのでしょうか。教えてください。お願いします。
654653:03/08/08 19:44
>>653
自己レスですが、それであってるようでした。
ありがとうございました。
655デフォルトの名無しさん:03/08/08 20:45
宣言したのにまったく使ってない変数はやっぱりアセンブルされたときに
余分なコードとしてEXEに組み込まれてるの?

それとも最適化の段階でカットされてるのかな?
Windowsキーを無効にしたいんですが、どうやればいいのでしょうか。
キーボードを壊すとかは勘弁して。
657デフォルトの名無しさん:03/08/08 20:56
Delphi6 Personalで簡単なメーラーを作りたいのですが、
Personalだと無理でしょうか?
658デフォルトの名無しさん:03/08/08 21:07
>>657
Delphi6 + Indyコンポーネントでできると思う
659デフォルトの名無しさん:03/08/08 21:14
>>656
APIスレで聞いたほうがいいとおもう
660657:03/08/08 21:17
>>658
ありがとうございます。
調べてがんばってみます。
661デフォルトの名無しさん:03/08/08 21:19
>1)前者で作ると、ACCESSの入ってない環境では使えない。
おおむねその通りだと思います。

>2)Delphiで作ると自立した?アプリケーションが作れるので、多くの環境で
>  使えるが、personal版ではDBは作れない。
前者はあってますが、後者はそうでもありません。
Windowsにはデータベースエンジンの「ADO」という一種のActiveXが
組み込まれていて(古いOSには入ってませんが)、DelphiからADOを
コントロールすれば、Accessを持っていない環境でもAccessファイルを
操作することが出来ます。ただしPersonalではめんどうです。

以前書いたので参考にしてください(92から。98はわたしです)
http://pc3.2ch.net/tech/kako/1028/10284/1028436692.html
>>656
無効にしたい処理の前に下記のコードを記述。

ShowMessage('Windowsキーを押さないでね!v(^○^)v')
663デフォルトの名無しさん:03/08/08 21:25
ひろみに会いたい人、ひろみが欲しい人、手ぇあげてっ!
はーい、その指をマウスにもってってぇ・・・
ここをclick! ☆ъ( ゜ー^)> http://www.gals-cafe.tv
1週間毎日10分、がんばってサービスしますっ!来てください♪
・・・えっ?誰も手ぇあげてなかったってハナシ?
そんなんナシだよぉ〜〜〜。・°°・(>_<)・°°・。
会いたいよぉ。きてくださぁい( ・O・)∞∞OOO○○○☆(〃。。〃)
664デフォルトの名無しさん:03/08/08 21:25
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
665デフォルトの名無しさん:03/08/08 23:11

Button1を押すと「フォームを50%に縮小して表示」
このプロシージャ、どんなふうに書けばいいんでしょ
procedure TForm1.Button1Click(Sender: TObject);
begin
height := height div 2;
width := width div 2;
end;
スレ違いかも知れませんが
【】すみつきカッコの文字コード分かる方いらっしゃいます?
668デフォルトの名無しさん:03/08/08 23:33
>>667
$4511 $4512
669650:03/08/08 23:34
>661
有難うございます。
教えて頂いたスレのレス、保存させて頂きました。
少しずつ、勉強していきたいと思います。
670デフォルトの名無しさん:03/08/08 23:35
>>661
OS means Windowsかよ。おめでてぇ。
>>668
ありがとうございました。
672デフォルトの名無しさん:03/08/08 23:38
>>670
Delphiスレで何言ってんの(^-^*)♪
673無料動画直リン:03/08/08 23:38
>>671
素直にSJISの文字コード表見た方が良いと思うぞ。
675665:03/08/08 23:43
>>666
_| ̄|○
まったくもって申し訳ないです
書き方が悪かったようで。

縮小したいのはフォームそれ自体ではなく、中身なのでした。
こんな書き方も変かな。
1000Pの文字とか(んな無茶な)、普通に表示したらはみ出すようなものを、
おさめてくれるような。

ExcelVBAでいうところの
ActiveWindow.Zoom = 50
みたいな
>>674
スンマセン。他の括弧は見つかったんですが【】は見つからなくて・・・
見直してきます
677A:03/08/09 01:10
>>675
地道に全部のサイズを手動で制御するしかないんじゃないかな…?

それか、どっか別の場所の架空のフォームを作って、そこに書かせて
それをサイズを縮小してコピーとか…
イベントとかを座標修正して転送してやる必要がありそうだけど。
Timerコンポーネントがよく分からないんですけど
Timer1.Enabled := False ;
とするまでIntervalで指定した間隔で実行し続ける
ということではないのでしょうか?
それで合ってます
>>679
そうですかありがとうございました。
では違うところが間違っていたのか・・・。
Intervalで指定した間隔でタイマーイベントを繰り返す
>>675
有償コンポがあるくらいだから標準では無理。
683613:03/08/09 15:06
procedure TForm1.FileListBox2DblClick(Sender: TObject);
begin
FileListBox2.FileEdit:=Edit19;
end;
list内ファイルをダブルクリックをすればedit19に出力するんですが、
list内のファイルを選択する一回目はダブルクリックでいけるのですが、
二回目からはワンクリックでedit19に出力してしまいます・・
二回目以降もダブルクリックで出力できるようにするには?
教えてください・・
使い方間違ってます。
最小化とかは普通に出来ても最大化やサイズ変更が出来ない
フォームを作るにはどうすればいいのですかね?
BorderStyleとかいじってもうまくいきません。
BorderStyleがbsSingleで、BorderIconsのbiMaximizeをFalse。
shift_jis 2バイト文字コードから、直接文字を表示するにはどうすればいいんでしょうか?
WideCharにすると、文字コードがずれるし分かりません。
>>686
できました。thx
ボタンの上とかにマウスを載せるとポップアップヒント(?)が出るのはどうやってるんですか?
>>689
ボタンのプロパティ Hint
ListViewで項目を選択する際
一個目は問題ないんですがその後他の項目を選択しようとすると
OnSelectItemでエラーが出てとまってしまいます。
どうにかなりませんか?
692 :03/08/10 00:13
>>691
該当するコーディングをチェックし直す。
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
Edit2.Text:=ListView1.Selected.Caption;
Edit3.Text:=ListView1.Selected.SubItems[2];
end;
2個目を選択しようとした時↑の
Edit2.Text:=ListView1.Selected.Caption;
に引っかかってる・・・。
何が問題なのかわかんない・・。漏れの頭?
if Key = 'a' then
begin
ShowMessage('a');
end;

押すkeyがaではなくspaceで反応してほしいのですが
そう言う場合はどう改変したらよいのでしょうか?
695 :03/08/10 00:18
SubItems[2];の「2」って何を示してるつもりダス?
あと、エラーで困ってる場合は、そのエラー文も書くと(略)
696691:03/08/10 00:34
>>695
SubItemの3つ目です。vsReportでのListViewの左から4つ目の項目。
コメントアウトしてみてもやはり2回目でエラーでした。
デバッガ例外が発生-----
プロジェクトが EAccessVilotationクラスの例外を生成しました。
'Access violation at address 004769CE in module 'Project1.exe'. Read of address 00000024'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
  [OK] [ヘルプ(H)]
------
>>690 ども
>>696
if Selected then
begin
Edit2.Text:=ListView1.Selected.Caption;
Edit3.Text:=ListView1.Selected.SubItems[2];
end;
>>698
(TT)ありがとうございました。無事選択できるようになりました。
>>694
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=' ' then ShowMessage( ' ' );
end;

こういう意味?
>>700
すいません、スペースバーを押すことによって反応して欲しいということです。
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
 if Key = VK_SPACE then begin
 ShowMessage('a');
end;
703702:03/08/10 01:16
ぁ、すまん。イベント違うな
参考までに
リターンキー VK_RETURN
スペースキー VK_SPACE
エスケープキー VK__ESCAPE
SHIFTキー VK_SHIFT
CTRLキー VK_CTRL
ALTキー VK_ALT
F1 〜 F12 VK_F1 〜 VK_F12
BSキー VK_BACKSPACE
カーソルキー VK_LEFT , VK_UP , VK_RIGHT , VK_DOWN
>>700
もう一度すいません。
key=' ' でもスペースに反応してくれるんですね。
ありがとうございました。

>>702
ありがとうございました。

もう一つ質問なんですけどこれをCtrl+なにかのキーで
反応するようにするにはどうしたらいいのでしょうか?
>>703
ifを二重にしたらCtrl+なにかもできそうですね。
ありがとうございました。
>>705
KeyDownのShiftを使えれ。
707665=675:03/08/10 02:13
>>677
>>682
お手数おかけしました
ほぼ10時間、頭かきむしりながら別フォームで試そうとしましたけど
体力の限界です。
今回のところは投げ出します。
もちょっと腕上げてから出直してきます。
ステータスバーに時間が減って行ってるのが視覚的に分かるような
コンポーネントをいれたいのですがちょうど良いコンポーネントはありませんか?
プログレスバーだと増えているようなイメージがあるので・・・・。
>時間が減って行ってる
のを逆手にとれば、プログレスバーでいいじゃん
>>707
Anchorsを全部外してみては?
違うかな?
>>708
Windowsでは数値が減るのは殆どが数字で表現されているよ。
プログレスとかゲージとか使うんなら、経過時間(増える)とかにすれ。
プログレスバーで満タンから減らしていくっていうのはダメダメ(奇抜)ね。
あ、ビジネス系じゃなくてゲームなら許容されるかもね。
TComboBoxって複数bytes文字に対応してないの?
BSが1bytes毎なんだけど。
TListViewのOwnerDrawについて詳しく説明されてるHPないですか?
>>713
AutoCompleteがTrueになってない?
質問なのですが、
TRichEditコンポーネトで、最初の行にカーソルを移動することができたら、
その方法を教えていただけませんか?
>>503をみて、TMemoコンポーネントなら
できるようになったのですが、同じ方法では
対応できていないようなので、よろしくお願いします。
>>716
検索が足りないと思うよ。

リッチエディットの最後の行:=richedit1.Lines.Count;
RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX,リッチエディットの最後の行,0);
RichEdit1.Perform(EM_SCROLLCARET,0,0);

フォーカスが当たらないとダメっぽいから注意。
718714:03/08/11 00:21
TlistView OwnerDraw
ListView OwnerDraw
Delphi Ownerdraw
リストビュー OwnerDraw
TListView オーナードロー
Delphi オーナードロー
こんだけググっても見つからないなんて(;´Д`)
他にイイ(・A・)検索単語ありますか?
>>718
(´-`)。o ○ (オーナードローの何が知りたいのか書かないから、レスが付かないと思われ…)
Editに入力されている文字が1バイト文字かどうか判断したいのですがよい方法はないでしょうか?
入力できるのを1バイト文字に固定せずif文等での判断でいいのですが。
よろしくお願いします。
ByteType
722440:03/08/11 01:09
Formの拡大に合わせてボタンが拡大されるようにするにはどうすればいいんですか?
>>721
ありがとうございました。
しかし使い方がよく分からないので解説していただけないでしょうか?
ググってもよく分からなかったもので。
>>723
Delphiに付いているヘルプは見ましたか?
>>722
Anchorsを全部trueにしたり色々してみて研究してください
>>687
Shift-JISコードに対応する文字を出したいということでしょうか.

{
Shift-JISコードを文字に変換します.
}
function SjisToStr(const SJisCode: word): string;
begin
SetLength(Result, 2);
Result[1] := chr(SJisCode shr 8);
Result[2] := chr(SJisCode and $ff);
end;

{
Edit1.TextにシフトJISコード
Edit2.Textにそれに対応する文字
}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := SjisToStr(StrToInt('$' + Edit1.Text));
end;
728687:03/08/11 03:06
>>727
ようやく分かりました。
脳みそ無限ループに入っていたので、大感謝!
>>723
「これはどうするのだろう?分からない」
↓質問
「レスは来たけど、やりかたが分からない」
↓質問


ループを続ける気ですか?ヒントもらったんだから、徹底的にいろいろ
実験してからでも遅くは無いと思うが…。
>>723
bytetype(Edit1.Text[i])で戻り値が
mbTrailByte //全角2バイト目
mbLeadByte //全角1バイト目
mbSingleByte //半角
731723:03/08/11 05:48
わかりました。
ありがとうございました。
732デフォルトの名無しさん:03/08/11 12:34
delphiでIRCクライアントの作成はできますか?
ただ会話さえできれば良い程度で、ファイルの受け渡しや
@配布とかモード変更とかも無し程度の機能です
>>732
RFC 1459
TClientSocket
>>725
それだと大きくなり過ぎるんですよ。
Formと同じくらいの倍率で拡大することはできないのでしょうか?
どこかの海外のコンポーネントで、
ボタン状で、押下するとメニューが出る、
っていうやつがあったと思うんだけど、
どこのサイトだっけ…?
すいませんVB厨です。
Delphiを使うことになって勉強しるのですが、わからないことがあるので、
教えていただけないでしょうか。

Form1からForm2を開きたいのですが、Form2を同時に何個も開き、
同じ処理をさせたいと思っています。
(例えば、Form1でjpgファイルを選択すると、次々に
Form2が開き、それぞれ異なる画像が表示されるような・・・・)

例えばVBですと、
Dim objForm(10) as Object   'オブジェクト型で配列を作成
Set objForm(i) = New Form2  'オブジェクトのコピー
objForm(1).Show         '1.jpgが選択されフォーム表示
objForm(2).Show         '2.jpgが選択されフォーム表示
のようにすると、Form2を何回も再利用できますよね。
このとき、2.jpgを選択すると1.jpgのフォームは残しておきたいのと、
例えば画像をクリックしたときに何らかの動作ができるようイベント
も取得したいと思っています。
Delphiでは、どのようにすれば実現できるのでしょうか。
過去スレで似たようなのがありましたが、いまいちピンとこないので、質問
させていただきました。
まったくわからないので途方にくれています。よろしくお願いいたします。
>>736
Delphiでは、作成したフォームが、既にクラスになってます。
Var
F1:TMyForm;
F2:TMyForm;
Begin
F1 = TMyForm.Create(self);
F1.Show;
F2 = TMyForm.Create(self);
F2.Show;

です。配列にしたきゃ、TObjectかTFormの配列に代入して下さい。
>>736
なぜ最初に「すいません」と謝るのか。
「VB厨ですいません」と謝っているのか。
だとしたらそれは間違い。
外人に対して「日本人ですいません」と言ってるようなもの。
言語の壁は、ベルリンの壁より厚いが、生垣より低いはず。
>>737
お、ありがとうございます。
なるほど!なんか、そのように聞いて目の前のモヤがなくなった気がします。
少しだけオブジェクト指向の考え方に近づいたような気がします。

ちと長くなりますが、後進の方のために記述しておきます。

普通に新しくForm2を作ります。
Form1のinterfaceのusesの部分にUnit2を追加し、
arrForm2 :array[0..10]of TForm2;と変数を宣言し、
あとはarrForm2[0] := TForm2.Create(Self);で無事に
つくることができました。
はじめは何故かTFormでオブジェクトを造っていたので、
TForm2に設置したエディットボックスをいじることができず、
悩んでしまいましたw


わざわざありがとうございました。
また疑問があったらよろしくお願いします。

>>738
なんか申し訳ないかな?と思いまして。
どもすいません
>>738
なんか偉そうだな
>>734
じゃあ、なぜ先にそう書かない
質問スレで小出しすんなボケが
742734:03/08/11 17:52
>>741
すいません。
743デフォルトの名無しさん:03/08/11 18:21
unit A の interface 部で宣言した定数 CONST_A1 を、unit B で使うためには、
unit B で uses A をするだけではだめなのでしょうか?

"未定義の識別子" となってしまいます。

同じような形で宣言した型 typeA1 は使えるようなのですが。
744デフォルトの名無しさん:03/08/11 18:51
>>740
なんかエロそうだな
>743
いや、それで使えるはずだよ。スペルミスとかじゃないの?
hogehoge : byte;

このhogehogeの
上位4ビット(age)と下位4ビット(sage)に分けたいのですが、
どうしたらいいですか?
delphiの最小単位がbyteかな?どうすれば。。。
shl and and
hogehoge&0xF0
hogehoge&0x0F
749746:03/08/11 22:13
>>747さん >>748さん ありがとう。
簡単に解決しました。

MainMenuやPopupMenuの背景色を変える方法ありませんかー?
オナドロー
>>750
オナニードロドロ
753750:03/08/11 23:03
>751
TMenuBar経由だと出来ないっぽい…
ScrollBoxにImage1を置いて、マウスドラッグでスクロールさせるには
どんな風にコーディングすればいいのでしょうか?
>>754
つまんで移動する感じ?
MouseDownとMouseMoveとMouseUpを使用する。
MouseDownでフラグをON
MouseMoveかつフラグONのときに移動
MouseUpでフラグOFF
>>755
「スクロールさせる」の部分が分からないんじゃないの?
>>754
var
DragPos : TPoint; DragDown : boolean;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
DragDown := true; DragPos.X := X; DragPos.Y := Y;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
MovePos : TPoint;
begin
if DragDown then
begin
with ScrollBox1 do
begin
if HorzScrollBar.Position > HorzScrollBar.Range then HorzScrollBar.Position := HorzScrollBar.Range;
if HorzScrollBar.Position < 0 then HorzScrollBar.Position := 0;
if VertScrollBar.Position > VertScrollBar.Range then VertScrollBar.Position := VertScrollBar.Range;
if VertScrollBar.Position < 0 then VertScrollBar.Position := 0;
HorzScrollBar.Position := HorzScrollBar.Position - (X - StartDragPos.X);
VertScrollBar.Position := VertScrollBar.Position - (Y - StartDragPos.y);
end;
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
DragDown := false;
end;
758754:03/08/12 09:39
>757
うまくいきましたです。ありがとうございます。
ソースの方は、
 ・使用されていないMovePosの削除
 ・宣言されてないStartDragPosをDragPosに変更
しましたが、それで正しいですよね?
759デフォルトの名無しさん:03/08/12 13:53
>>719
根本から分かってない、というのが適切です。その上やりたいことがいっぱいあるんで。もうだめぽ
OwnerDrawでTListViewに項目を描画することすらできない・・・
vsReportでのCaptionは何とか追加できたんですがSubItemが描画できません
そこで、お願いがあります。
Button1をクリックするとListView1(vsReport)にOwnerDrawで
|A |B |C
|D |E |F
と描画する方法を教えてください。どのイベントで何を発生させればいいのかすら分かりません。
それさえできれば試行錯誤で他のもできるようになると思いますんで。
>>759
何がわかっていないのかわかってるならそこから調べればいいだろ?
根本からわかってないならそもそもOwnerDrawが何なのか調べろ
761デフォルトの名無しさん:03/08/12 15:52
Delphiに未来はあるんでつか?
Delphiにあったとてお前には無い
Streamとかって、LoadFromStream/SaveToStream出来ますが、
2つのStreamを1つに繋げるには、どう書けばよいですか?
var src1, src2, dest: TStream;
dest.CopyFrom(src1, 0);
dest.CopyFrom(src2, 0);
有難うございました>>764
0だと全部読んでくれるんですね。
766! 759:03/08/12 18:59
>>760文句言うなら最初から答えるなよ。知障、スレタイ読めヴォケ
767デフォルトの名無しさん:03/08/12 19:13
IndyのIdHttpServerって例外が消されるんですか?
エラーが知りたい場合どうすんでしょ。
エラーメッセージだけでも欲しい。
>>766
文句じゃなくてアドバイスだろ
超初心てのは何がわからないのかもわかってない香具師
何がわからないかわかっているのに調べないのはただの馬鹿
>>759
Demosディレクトリの下にOwnerlstってサンプルがあるから見てみたら?
リストビューじゃなくてリストボックスだけど、基本は同じ。
質問する方でPC JapanのDelphiの記事を見て始めた方は一言書いてください。
特典があります。
771デフォルトの名無しさん:03/08/12 20:41
>>770
メール覧の厨房撃退ってなんだ? 荒らすなボケ。
ハァ? 寝ぼけてんのかこのヴぉけ失せろや
お前が厨房丸出しだろ
774デフォルトの名無しさん:03/08/12 21:23
>>770
見て始めましたが何か?
どんな特典か楽しみですね。
あなたが真性厨房になる所が見られるのですか?
必死だなwwwwwwwwwwwwwwwwwwwwww
776デフォルトの名無しさん:03/08/12 21:27
で、特典って何よ?
厨房撃退は荒らしです。無視しましょう。
荒れろ荒れろwwwwwwwwwwwwwwwwwwwwwwwww
>>778
厨房うぜー。
>>759
各項目のCaptionの描画まではできているのですね.

リストビューコンポのオーナー描画機能は何度も拡張されたためにややこしくなっていますが,基本的にはOnDrawItemイベントのみを使うと考えてください.
(OwnerDrawプロパティをTrueにしないとこのイベントは発生しません)
このイベントは項目ごと発生します.項目の見出しやサブアイテムごとに描画イベントがあるわけではありません.イベントハンドラでは項目の見出しとそれに対応するサブアイテムの描画も同時に行います.

イベントハンドラには項目の見出しとサブアイテムの描画領域は渡されませんが,
・全体の領域(上下左右の端)→引数Rect
・各領域の上と下の端→引数Rectと同じ
・見出し領域(一番左の領域)の左端→引数Rectと同じ
・それぞれの幅→(Sender as TListView).Columns[(カラムのインデックス)].Width
これらから各領域が求められます.

なお選ばれている項目の強調表示やフォーカス(点線枠)の表示も自分で描画しなければなりません.イベントハンドラの引数Stateを参照して,選択されていたりフォーカスがあることがわかるように描画してください.
「…と考えてください」って言い切ってしまいましたが,全然違うじゃないか_| ̄|○
すいません.出直してきます(首つりAA略)

すごい初歩的な質問なんですが・・

「'」を出力したいのですけど・・
C言語では「\」を前につければ出力できますが、パスカル言語では?
783 :03/08/13 00:09
chr($27)
ここはバカばっかりか!
糞でるふぁ〜い   ぷー
>>784
Delphiユーザは、「糞して、死ね」が合言葉だからね。
>>766 誰?
>>780-781 thx
787782:03/08/13 00:56
>>783
ありがとうございます!
788783:03/08/13 01:02
あれ。もっといい答えがあるのかと思った(^^;
>>780
他のイベントは通常どおりでOnCustomDrawItem等のイベントを色々設定すればいいんですよね?
790ねこま:03/08/13 01:48
TListView の CustomDraw は2つの方法がありまして,1つは DrawItem プロパティを True して OnDrawItem イベントですべてを描く方法.
もう1つは DrawItem プロパティを False のまま OnCustomDrawItem, OnCustomDrawSubItemイベントで描く方法です.

後者では DefaultDraw 引数でキャプションやフォーカスの描画を任せるかどうかが決められます.
更に細かいステージが必要なら OnAdvancedCustomDraw, OnAdvancedCustomDrawSubItem イベントを使えとありますが,
これらはバグっていて cdPrePaint 以外が発生していません.
>>782
''''
#39
#$27
''''
>>790
助け船に感謝致します.

ところで後者の方法では項目の表示領域はどうやって取得するのでしょうか?
OnDrawItemイベントと違って表示領域を引数で渡してくれるわけではないようなので
試そうとして行き詰まってしまいました.

(というか数年前に同じ場所でつまづいたきりだったのを思い出しました…)
Rect:=Item.DisplayRect(drBounds);
質問する方でPC JapanのDelphiの記事を見て始めた方は一言書いてください。
特典があります。
796デフォルトの名無しさん:03/08/13 19:16
StringGrid の一カラムを非表示にして、隠しカラム的に使うようなことは
できないのでしょうか?
>>796
ビューでデータ管理しようとする無かれ。
798796:03/08/13 19:37
>>797
なるほど。了解しました。
799デフォルトの名無しさん:03/08/13 20:18
>>796
やれるよ、なんも無いはずのグリッドに値書けるでしょ。

>>797
一説には、ケースバイケースでは?
>一説には
憶測でしゃべんな
さすがにお盆なのでVBプログラマ様もデスマーチから解放されたかな?
802796:03/08/13 20:45
>>799
なるほど。できますね。

RowCount, ColCount などは表示上の数ということですか。
実質、値をセットできる範囲の制限とはできるのでしょうか?

なんか気持ち悪いな……。
MathのInRangeと同じような感じで、
PointがRect内か否かを返す関数ありませんか?

自作は簡単ですが、最適化された関数が
標準であれば、それを使いたいのですが、
ちょっとヘルプで見当たらなくて…。
(探し方が甘い?)
805803:03/08/13 21:32
>804
わっはー
ビンゴです。うまく行きました。
元はAPIなんですな。
>>801
関係ないスレで暴れるなよ。アンチVB厨。
>>804
俺もちょうどこんな関数ほしかったところだ。タイミング(・∀・)イイ!!
まともなOOPLならRectangleクラスのメソッド探せば
すぐ目的のメソッドが見つかるのにな。
Delphiって使いにくいね。
>Rectangleクラスのメソッド探せば

そんなもんにまでクラス持ち出して・・・激しく重そうだな。
>>808
まともなOOPLかどうかは関係ないだろ。
DelphiがまともなOOPLだとは思わないが
目的のメソッドが見つからないのは
Delphiが糞だからだ。
>>810
関係あるだろ。Rectangleのメソッドは高々2・30個しかないから
Containsメソッドを探すのも容易。

それに対してPtInRectはフラットに並んだ数百数千のAPIから探し出す必要がある。
糞なのは手続き型言語全部だな。
質問する方でPC JapanのDelphiの記事を見て始めた方は一言書いてください。
特典があります。
>>809
いまや貧乏人の低スペック環境なんか見てないんだよ
未だにDel厨はクラスが重いとかいってんのか?
>>813
でもJavaはクライアントサイドじゃ使えないって結論に達してますよ。
Java??
Del厨がかく乱作戦に出たようです。
>>815
サーバサイドでは使えますが何か?
Delphiとは違ってなぁ。
>>817
>Delphiとは違ってなぁ。
使えないんですか?絶対に?本当?
Delphiはクラスにするととても重くなるのです。
820803:03/08/13 22:30
マターリしる!(・∀・)
ここは初心者向け質問・解答のスレっすよ!

バトルしたかったらそういうスレにGo!!
なんでクラスが重いんだ?
馬鹿じゃねーの(w
>>821
禿げ同。しかし>>809のような勘違いさんがいるのですよ。
Delphi使いの恥です。もう氏ねと。
いやいや、Rectangleを数千個とか使うのなら、どうだろう?
RecordのRectと比べて、クラスの方が当然コストはかかるだろう
お前ら無知だね。
DelphiでRectangleクラス作ったら重いだろ。
これはもう言語の構造的欠陥といってもいい。
馬鹿大増殖(プヒュー
ここはスタックとヒープの区別のつかないお馬鹿ちゃんが集うスレですか?
827デフォルトの名無しさん:03/08/13 22:56
listviewで数字のソートがうまくできないんですが・・・・
みなさん取り込み中?
SortType
>>827
ヘルプも読めないバカ登場
>>828 知障?
>>794
ありがとうございます.Del5のTListItemのプロパティ一覧には出てこないので見落としていました….

>>796
昔やりましたが >>797 さんに賛成.
情報を表示・編集(操作)する場所と保管する場所はできる限り分離した方がよいです.Delphiのデータベースコンポはまさにその良い見本になっているのですが,Per版ユーザーに見る機会がないのはもったいない話.

>>802
RowCount/ColCountは実際の数を返すはず.

>>811
私の場合Win32日本語ヘルプ(例の古いやつ)でカテゴリ別で調べたのでそんなに苦労しませんでした.Win3.1時代に電話帳のようなAPIリファレンスを買ったものの全くといって良いほど使わなかった苦い経験が生きているのでしょうか.
832デフォルトの名無しさん:03/08/13 23:54
try〜finally文について質問です。
finally節は、エラーが起きても確実に実行したいコードを
書くところだと理解しているのですが、エラーが起きてないの
にtry節でExitを実行してfinally節を通過することを期待す
るようなコードの書き方は正しいのですか?
たとえば、

StringList:=TStringList.Create;
try

(処理1)

 if f = False then ←処理2を実行する必要がないときは抜ける
  Exit;←@

(処理2)

finally
 StringList.Free;←A
end;

@で抜けてもAが確実に実行されることはヘルプに書いて
あるのですが、エラーが起きてないのにfinally節へ飛ぶ
のを期待するのは作法としていいんでしょうか?
もちろんいいよ
>>832
そうじゃないとException型を引数としたキャッチと同じになってしまう。
begin
 try
  exit;
 finally
  foo;
 end;
end;

begin try
 try
  raise ExitException.Create;
 finally
  foo;
 end;
except(e: ExitException) end; end;
とexitは例外で、最外周に暗黙のtry excpetがあると解釈しろとかいう説明が以前あったな。
836デフォルトの名無しさん:03/08/14 07:46
PC Japanを見てはじめました。

誰か解凍ソフトの作り方教えろ。
DLLを作っていて文字列形の返し方が分かりません。
誰か教えてください
>>837
dll作ったときに長々とコメントとして書いてあった気が。
>839
あれはDelphiのString型としての話ではなかったっけ?
Cと互換の文字列ならまた話は違うかと。
…と、未経験者なので適当に語ってみた(;´Д`)
841デフォルトの名無しさん:03/08/14 11:47
Delphi.NETって、VB.NETやVC#.NETみたいにWindows APIを使用するときには
宣言は必要ですか? それとも不要?
文字列のアドレス渡してもい、そこに文字列を入れておけばいいんじゃなくて?鉄郎
デザパタのCommandパターンのDelphiでの実例を
分かりやすく解説してくれているページってありませんか?
UNDO機能を実装したいんです。
×UNDO機能を実装したいんです。
○UNKO機能を実装したいんです。
Undo;
>>843
TObjectListにCommandオブジェクト彫り込んでいけば?
命令すんな
>>847
dcc32.exeよ、気持ちは分かるがそう怒るな。
よろしくお願いします。Delphi7です。
再生/録音のピークメーターを実装したいのですが、
どこから始めればいいのかさっぱりです。
Webでも、そういう記述ないし・・・・。

サウンドカードにピークメーターが実装されている場合
には可能のようなんですが、実装されてない場合は、
どっからもってくればいいんでしょうか。
OS標準のマイクのテストなんか、あっさりと実現してい
るんですよね・・・・。
どなたか、お教え下さい。
>>849
ピークメーターって何ですか?

mmsystem.hに関しては多少知識がありますが。
>>850
最大音量制限では?
>>851
ミキサーいじればOK?
>>850
ありがとうございます。
要は、入力可能最大音量を100%として、現在、何%の
音量が入力されているかを知りたいのです。

例えばWave録音するときに、一定以下の音量の場合
は録音を停止したりできればいいなぁ・・・・と。
どなたかお知恵をお貸しください。
>>853
Wave取り込んで 現在の音量÷量子化数×100とかは?
開始から10秒までにボタンを押したらこれ、20秒までに押したらこれ、のように、
時間によって判定の結果を変えたいのですが、どういう文を書けばいいのでしょうか?
ご指導お願いします。
>>855
開始時刻を記録。

ボタンが押されたら現在時刻と開始時刻から経過時間を求める。

似る成焼くなり。
857デフォルトの名無しさん:03/08/14 20:49
>>849
waveファイルの処理は、MCIや低レベルAPIを使うのが一般的なんだが、
849の目的なら低レベルAPIかな。
ある程度、Waveファイルに関する知識が必要。

Cだけど、
http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-058.html
http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-059.html
http://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-061.html

詳しい解説なら、
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9974043190
に、Waveの解説から再生・録音のサンプルがある。
>>857
>ある程度、Waveファイルに関する知識が必要。

PCMについての知識なら解るけど、内部でもRIFFチャンク形式でやりとりするの?
859デフォルトの名無しさん:03/08/14 23:03
>>858
内部では、PCMのバイナリデータの読み書き。(WAVEFORMATEX構造体)
ただ、849は再生・録音をやりたいらしいので、RIFFチャンク形式の知識も
必要になる。
Delphiで他アプリが送信したパケットを取り込んだりできますか?
ようするに、他アプリのネットへの接続に、プロキシ通したいんですが。
(靴下は鯖が少ないのでダメ&SockCap32てのがあるんで。
送信「した」のに?
すいません
他アプリ(普通のネットにつなぐヤシ) → Delphiで作成したソフト → 串 → お目当てのサーバ
と、こんな風にしたいんですが。
Timerの使い方がよくわからないんですが…。
どういうコードを書けばいいんでしょうか?
それ以前に何がしたいんだ?
>>864
まず質問に答えてください!
>>865
それもそうだな、スマンスマン。で、何がしたいんだ?
867863:03/08/15 00:43
すいません、863=855です。
課題(?)で音ゲーを作ろうと思っています。
判定を秒単位で三段階くらいに分けたいんです。
そのためTimerを使って、指定された時間±何秒、とかで結果を変えたいのですが、
ネットや本などに載ってないので…
よろしくお願いします。
>>855
Timerは一定間隔で何かをするときに使うものだからちょっと違う。
GetTickCount使え
startTime := GetTickCount;
ってやっといて
ボタン押されたら
(GetTickCount - startTime) div 1000
で経過時間が得られる
    ∧,,∧   
   ミ,,゚Д゚彡 
    ミ つ旦)~~ 
  〜と,,,~),,~)

Timerは使わなくてもいいのでは??

プログラム起動時に
TTime型の変数にNowで時間を取得しておいて

あとはボタンを押した時に
Nowで時間を取得して、
起動時からどれくらい時間が経ったかを
判定する。

という処理の流れになるのではないでしょうか。

って、>>868さんとかぶったな。
精度が必要ならNow関数より
GetTickCountがいいっすね。
870863:03/08/15 01:11
どうもありがとうございます!それで進めてみます。
接続されたライブカメラや、デジカメのプロパティを開きたい
のですが、どうすればいいでしょう。。。
通常のコンパネのスキャナとカメラからは見ることのできない
プロパティ画面がカメラに存在するようなのですが・・・・。

あとコンパネのマウスのプロパティとか、キーボードのプロパ
ティはShellApiを使って開けるのですが、そのなかでも特定の
タブを選択した状態で表示させることってできるんですかね。
>>871
systemディレクトリの
*.CPLを開けば出来る
>>872
全部開いてもでてきませんですた・・・・
デバイスドライバのDLLとかに入っているのかな・・・
874山崎 渉:03/08/15 15:20
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
>>857
ありがとうございます!
まだ観てないのですが、取り急ぎお礼まで。
Wave関連はコンポーネントがあるので、その知識は
必要とはしないです。とにかく、入力音量の値だけ
持ってくることができれば、それにあわせてTrueと
Falseを設定してあげれば済むので・・・・。

また質問させてもらうかもしれません。よろしくです。
>>875
shine
unitAで宣言しているレコード型変数を引数にして、
unitBにある関数に渡すことは出来ますか?

unitBでレコード宣言したら
[エラー] edit_form.pas(313): 'unitA.Thogehoge' と 'unitB.Thogehoge' には互換性がありません

と出たんです
var unitB.Thogehoge rec;とユニット名を修飾するか
'unitB.Thogehoge' の定義を削除。
879デフォルトの名無しさん:03/08/15 18:13
'http://www.foo.com/cgi?SJISの漢字'
をエンコードするにはどうすればいいですか?
>>878
どうも
usesで指定してあるMessagesとかの中身というか、定義をみたいのですが・・・・
>>881
Del6Per使ってるなら
C:\Program Files\Borland\Delphi6\Doc\*.intを検索

後は一手間かかるけどこっちがお勧め
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BTips%5D%5D#content_1_13
質問です。

Delphi6Personal版のコードエディタで、行末でカーソルを→に入れたら
次の行頭に行かずさらに右に進んでしまうのですが、
こういったDelphi独自(?)の操作性には慣れるしかないのでしょうか?
設定でよくあるエディタのように行頭に行くようにしたいのですが…
>>883
ctrl + →
ふと
#define begin {
#define end }
を思い出した。
は?
>>886
別の言語も知っておいた方が良いぞ。
特にDelphiはC言語知ってると世界が広がる。
delphiのヘルプに他のヘルプのキーワードを追加したいんですがどうにかやる方法ありますか?
delphi6 personalです
>>887
C言語はまったくわからないけど
Borland C++を使ってみたほうがいいかな?
>>889
WindowsAPIの宣言読替とか位は出来るようになってた方が楽ちん。
>>890
マジな話Cもpascalもまったくわからん。
一から始めるならどっちから始めるのがいいとおもう?
Borland C++ Compiler 5.5
Borland Delphi 6 Personal
よくわからんから薦めてくれたほうを使ってみる。
>>891
何がしたい?
単なる勉強ならC/C++を、
GUIなツール等を作りたければDelphiかC#Builderがいいよ。
>>892
C++Builder外した理由は?
無料版がないから
>>892
何がしたいかって言えば仕事ではなく勉強かな。
今落としていてすぐに使えるのはBorland Delphi 6 Personal
今から落としてみようかと思ってるのはBorland C++ Compiler 5.5ってとこです。

何か実用レベルの物を作るとかじゃなくてまずやってみながら覚えていきたいというレベルの話しなのですが
タダでできるもので勉強してみたいのでBorland C++ Compiler 5.5のほうがいいですか?

Delphiは書籍も出てないしC++の方は解説書も沢山出ているのでわかりやすいのかもしれないですね。
どうもCは難しそうなんで敬遠してたんだけどいまからやってみます。
どうもでした。
    ∧,,∧   ども。
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)

BigエンディアンやLittleエンディアrン
周りの処理をしているのですが

Result: WideString
UpByte, DownByte: Byte;


Result[i] := UpByte + DownByte;

Result[i] := DownByte + UpByte;

こういうことをやりたいのですが、
上記コードではうまくいきません。

どうやったらうまく上位バイトと下位バイトとで
WideStringに値を入れる事ができるでしょうか?
よろしくお願いします。
    ∧,,∧   
   ミ,,゚Д゚彡   すまそ。解決しまつた。
    ミ つ旦)~~
  〜と,,,~),,~)

Result[i] := WideChar( (UpByte) + (DownByte) * $100 );

このようにしたらよいようです。
htonlとか使えよ。
    ∧,,∧    >>898
   ミ゚Д゚,,彡   ん?俺?
    ミ つ旦)~~

いちいちAA貼るなよウザギコ
>>871
DirectShowで入力フィルタのプロパティページを開くのはどう?
>>897
8bitシフトとかじゃあかんの?


data = ((data and $ff00) shr 8) or ((data and $00ff) shl 8);
>>884

thx!
いくらか触った感じだとDelphiはプログラム自体の設計はいいのに
エディタの操作性が微妙だから7でそのへんが良くなってるといいんですが…。
>>903
慣れですよ。慣れ。
905デフォルトの名無しさん:03/08/16 13:11
TPageControlを使っているので、すが、
タブの高さが小さくて選びにくいです。もう少し大きくするには
どうしたらよいでしょうか?
TabHeight
>>905
こする
908905:03/08/16 13:34
>>906
ありがとうございます

>>907
今回は>>906さんの方法を利用させていただきました。
頂いたアドバイスは、別の機会で参考にさせていただきます。
ありがとうございました。
>>907
ウワッ オキクナータヨ
・・・ってネタレスなんか期待してねーんだよ!!
真面目に答えろ!
>>910
慣れですよ。慣れ。
912905:03/08/16 14:03
TabHeightを30ぐらいにして、大分いい感じになりました。
逆に0にしてもタブが非表示にはなりません。
1にすると変な感じですし。タブを非表示にすることは、
どうすればいいでしょうか
少しはヘルプ見ろよ。
914905:03/08/16 14:21
>>913
インストールしたフォルダの中に、ヘルプファイルがありました。
ありがとうございました
フォームのタブクリックしてF1でヘルプが出るよ
そりゃあるさ
かちゅ〜しゃで、
>>3みたいなところにカーソルを合わせると、
フォームじゃない、コメントのような枠?が出てきますが、
それをするにはどうすればいいですか?
>>917
確かイベントが発生したはず。
>917
THintWindow
920デフォルトの名無しさん:03/08/16 18:38
ActiveXコンポネーント使いたいけど、うまく取り込めません。

ttp://miyake.no-ip.org/FreeSoft.asp
ここのWhoisComをつかいたいんですけど


921デフォルトの名無しさん:03/08/16 19:00
920さんに便乗なんですが
OCXってActiveXとどんな関係があるのですか?
ネットで説明探しましたが概念が全然わかりません
VB用(としか書いてない)のOCXをdelphiで使うことは出来るのですか?
本当に何がなんだかわかりませんのでおながいしまつ
>>918-919
ありがとうございました
>>921
おんなじようなもんでつ。
>>920
なんかエラーでも出るの?
何事もなく取り込めて使えたけども。(Del6 Per)
925デフォルトの名無しさん:03/08/16 20:11
Delphi6Personal版で、

program FirstCode;
begin
writeln('Hello!');
readln;
end.

ってプログラムがちゃんと動かなかった。なぜ?
エラーメッセージは?
>>925
>readln;

胡散臭い。エラーメッセージは?
プロジェクトを作るとき
[ファイル|新規|その他]でコンソールアプリ選んでる?
これやらないとエラーになるかも。
929デフォルトの名無しさん:03/08/16 20:19
>>925-926
「モジュールUnit1でエラーが発生しました。TForm1クラスの宣言が無いか間違ってます。」
です。
>>929
フォーム消したな・・・。
>>924
当方win2k + Delphi5pro

1.WhoisCom.dllを\WINNT\SYSTEM32のシステムディレクトリにコピー
2.コマンドラインから Regsvr32 WhoisCom.dll
3.Delphi起動 [コンポーネント]→[ActiveXコントロールの取り込み]

でリストにWhoisComが出てインストールボタンで出来るんですよね?それらしいのが無い。
追加ボタンでwhoiscom.dllを直接指定してみたけど出てこない。
何か間違ってますか?
>>931
[プロジェクト]→[タイプライブラリの取り込み]
>>932
うまくいきました。
有難うございました。
AのalignをLeft,BをBottomにしたら、

┌──┬──────┐
│   │         .│
│   │         .│
│ A │  Form    .│  
│   │         .│
│   │         .│
│   │         .│
├──┴──────┤
│             │
│     B       │
└─────────┘

になったんですが、

┌──┬──────┐
│   │         .│
│   │         .│
│ A │  Form    .│  
│   │         .│
│   │         .│
│   │         .│
│   ├──────┤
│   │         .│
│   │ B       .│
└──┴──────┘

のようにするにはどうすればよいですか?
+−+−+
|A|B|
+−+−+
として(パネルAはLeft, BはClient)
Bの上に
+−+
|B1|
+−+
|B2|
+−+
を乗せればいい
>>934
多分
bのparentをFormとAがあるパネルに移動する
>>935,936
どうも
色々やってる厨です。 delhpi6 Personalです。

要は実行時に色々ellipseやrectangle図形を描いてそれをメタファイルとして
保存なりコピーしたいのです。
なるべく簡単な実現方法をしりたいですけど。

やってみたのは
imageコンポーネントに
image1.canvas.ellipse(x,y,x,y)なんて描画したのを

emf/wmfファイルとして保存 あるいはクリップボードにコピーするのは

image1.Picture.Metafile.SaveToFile('c:\hi.wmf');
clipboard.Assign(image1.Picture.Metafile);
(image1.Picture.Metafile.assign?)

なんて気軽にやったところで無理です。三時間ばかり格闘してますが
var
 MetaFile : TMetaFile;
 MetaCanvas : TMetaFileCanvas;
という
ヒントらしきものが今漂流中に手に入ってます。


だれか助けてくだされ
>>938
Image1.Picture.SaveToFile('a.bmp');じゃだめなんか?
>>938
順番が逆。図形を描いてからメタファイルにするんじゃなくて、
最初からメタファイル作っといてその上に描く。

MetaFile := TMetaFile.Create;
MetaCanvas := TMetaFileCanvas.Create(MetaFile, 0);
MetaCanvas.Ellipse(x, y, x, y); { 問題の図形を描画 }
MetaFile.SaveToFile('higedance.wmf'); { ファイルに保存 }
Image1.Canvas.Draw(0, 0, MetaFile); { 画面にも出したければこう }
MetaCanvas.Free;
MetaFile.Free;
Win2k,XPだとTEdit等の文字列がUnicodeで9xはSJISという噂は本当ですか?
だとするとSelStart等を使うコードをOSごとに切り替えるなんて糞面倒くさいことをするんですか?
これはひどいDelphiの限界ですね。
>>942
プ 見事に引っかかってやんの
それはVB厨吊るための偽情報ですよ。
944デフォルトの名無しさん:03/08/17 04:10
もう少し待ってれば>941さんのスマートなコードにありつけたのに…

Image1.Canvas.Draw(0, 0, MetaFile); { 画面にも出したければこう }
ってのを
image1.canvasに対して同じように
image1.Ellipse(x, y, x, y); { 問題の図形を画面に描画 }
ってやってしまってました。
図形の数だけゴチャゴチャでなんて汚い、
と思って二つのimage1.canvasとmetacanvasをTlistにいれてみてキャストしてメソッドだしたり
assignかな、とかやってみたけど失敗で諦めてました。

本当に参考になります。

までも、自力で推測して近いとこまでいけたのは嬉しいかな。
>939さんありがとうございます。
945デフォルトの名無しさん:03/08/17 04:10

でも次の問題が…
描いたmetacanvasの一部領域のみを、保存したいとき、
もうひとつ保存用のstoreMetafileというのを作ってそこでmetacanvasからcopyrectして
保存という案で

storeMetaFile := TMetaFile.Create;
storeMetaFile.Height := 50;
storeMetaFile.Width := 50;
storeMetaFile.Enhanced:=true;

storeMetaCanvas:=TMetafileCanvas.Create(storeMetaFile, 0);
storemetaCanvas.Pen.Color:=clblack;
storeMetaCanvas.brush.style:=bsClear;

sourceRect := Rect(0,0,50,50);
MyRect := Rect(0,0,50,50)
storeMetacanvas.CopyRect(MyRect,metacanvas,sourceRect);
//eMFの書き込み
storeMetaCanvas.Free;
storeMetaFile.SaveToFile('C:\dtert.emf');

で中身なしのemfファイルができてしまうのです。
これも二時間以上googleとかで調べてもわからない…。
copyrectはビットマップのみなのかなとか諦めムードです。
>>943
Del7でそういうコードを書いたよ。SelStartやくにたたん。
947デフォルトの名無しさん:03/08/17 09:57
Visual Basic.net とか Visual c++.net はどこで入手できるのでしょうか?
Visual Basic5,0 はマイクロソフトのHPでダウンロードできたのですが
>>947
ちょっと大きめのパソコンショップへ。

ダウンロード出来たって言うのはVB5CCEの事かい?
>>947
Del厨ならDel厨らしくDelphi使いなよ。
950デフォルトの名無しさん:03/08/17 10:13
>948さん
ありがとうございます。VB5はCCEの事です。
パソコンショップ行って来ます。

>949さんもありがとうございました。
>>950
お決まりなので次スレよろしく。
まともな解答者が居ないのに次スレなんて要るのか?
スマン ちょっとHDDは壊れるわ納期は次々くるわで、答えてられんかったんよ。
954950:03/08/17 12:32
950です。パソコンショップ逝って来ました。
おかげでVisual c++.NET の予約できました。
でもよく見るとここDelphiスレだったんですね(汗

お決まりらしいので新規にスレッド作成しておきました。
くだすれDelphi(超初心者向け) Part5
http://pc2.2ch.net/test/read.cgi/tech/1061090908/
KylixのCLXで作ったヤツを、
WinのDelphiのVCLへ、
移植は簡単に出来ますか?
>>956
手動移植が一番
DelphiのCLXなら殆ど手間はかけなくて良いと思うが?
>>958
でもCLXだと配布が大変ちゃう?
>>945
メタファイルってのは描画の手順を記録したものだから、
ビットマップみたいに一部分だけ切り取るなんてことはできん。
うまくいくかどうかわからんけど、クリッピングして描いてみるってのはどう?

var rgn: HRGN;
rgn := CreateRectRgn(0, 0, 50, 50);
SelectClipRgn(MetaCanvas.Handle, rgn);
{ ここでMetaCanvasにあんなことやこんなことを… }
SelectClipRgn(MetaCanvas.Handle, nil);
DeleteObject(rgn);
>>883
Del5,Del6なら、コレ。(Del7はわかりませんが)
フリーカーソル無効化アドイン
http://homepage1.nifty.com/fuu/software/nonfreecursor.htm

>>912
ノートブックコンポ(TNoteBook)の代用を検討されてみてはいかがでしょうか.
962デフォルトの名無しさん:03/08/17 20:49
>960
ソースは先にクリッピングしておいてから、そこに描く、という感じなんですよね。
ありがとうございます。でもとりあえず描いてしまったものの一部を切り取りたい
んですよね…。

>描画の手順を記録
なんですよね。!!てことではっきり解決方向が見えました。

実行時、描画した順番(コード)を何らかの方法で再現させればいいのでは、と。
ユーザーがフロントエンドで円や四角形を描いたときの内部コードをそのまま再現させる
という感じ。

一番楽なのは、そのコード丸ごと文字列に入れて、あとでそれをそのまま実行してくれたら
、と夢のような。

極端なこと言ってしまえばユーザーがエディトボクスに、デルファイコードそのままの
metafile.ellipse(0,0,60,80)って入力して「実行」なんてコマンドボタンを押して描画する方法
があれば、一瞬にして楽に解決なんだけど。
'ellipse,0,0,60,80'を解釈・実行するなんて簡単だと思うけど。
全命令に対応するのは面倒だけど。
>>962
メタファイルってのは正にその描画した順番を再現する仕組なのだが。

メタファイルをもう一個用意して、クリッピング領域を指定してから
元のメタファイルを再生すれば切り抜きになるんでないの。
次スレの季節だがこのまま全滅ってことになりそうだな。
>>965
次のスレッドって、もう立っているようなきがするけど。
くだすれDelphi(超初心者向け) Part5
http://pc2.2ch.net/test/read.cgi/tech/1061090908/l50
967|Д・彡 ◆A6VzDeLphI :03/08/18 02:13
Delphiでグラフィックをいじるなら、SOFTBANKから出ている
「Delphi Graphic Secrets」という本がサンプルコードなどが沢山のっていて
とても参考になる。著者はかの中村拓男氏。
969デフォルトの名無しさん:03/08/20 23:37
アハハハハハハハハハハハハハハハハハハハハハッハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
ハハハハハハハハハハハハハハハハハハハハハハハハハハ
970デフォルトの名無しさん:03/08/22 12:33
フリー版delphiで作ったソフトとかソースって
商用利用じゃなきゃ公開、配布しても大丈夫?
971名無し:03/08/22 12:57
>>970 大丈夫
>970
2ch専用ブラウザを何と心得る。
うめ
975883:03/08/27 16:22
>>961

別件で質問しようとしていたので(言語にかかわらないのでここではしません)
遅れて気づきましたが、そういうアドインがでていたんですね。
感謝です!

そして、亀レススマンです…
978スレ埋め:03/09/02 00:29
公式DirectXユニットを作ってくれるようにボーランド様へ投書してくれる人募集!
作ってくれたとしても、どうせまた中途半端なのができるだけさ。
というか、敵はLongHornに向けて頻繁にアップデート繰り返してるからねえ
981978:03/09/02 23:16
>>979
それでも無いよりゃマシざんす。
出来ればデータはリソースから読めるヤツ、キボンヌ(死語)。
つーか、必ずリソースから読めて。
おながい(死語)。
>>981
Stream経由で読めるようにすれば解決
983埋め埋め:03/09/03 23:34
掲示板に、
「exeのサイズがでかいので何とかしてくれ」、
「VBは小さいのに」、
とか書いてあるとガックリ来ない?
「VBやってろや」って思っちゃう。
C++Builderは小さいのに・・・ とか
ランタイムも配布すりゃいいじゃん。
「VBもこうやってます。」とか言って。
986983:03/09/03 23:56
いや、書き方が悪かった。
「delphiプログラミング系」の掲示板(オレのところでは無い)に、
delphiを始めた人からの書き込みで
ってこと。
>>986
ああ、そういうことね。
自分しか使わないようなツールとかなら、

実行時パッケージを使って構築にチェックしる。

で済むんだけどね。
UPX で圧縮してやればいいじゃないか。 それくらいのサービスは手間じゃないだろ
こっちもまだ生きていたのか。
世の中の人の大半は、exeデカイ=メモリ喰い ってことだろう。
>>983
そいつは、exeのサイズがデカイことで、
本当に実害を被っているのか小一時間問い詰めたい。
いいたいだけちゃ(ry
.NET もメモリ食いなんだけどね。
exeでかいって言っても、普通に組んでれば10Mとかあるわけでもないし。
別に配布の問題も無いと思うんだがな。
いや、つい絵を沢山入れちゃうとそうなっちゃう時もなきもしもあらず
問1 貴方が一番嫌いな国はどこですか?
>>995
< `∀´>
ぬるぽ
>>997
ガッ
            ∧__∧
           i     i
          ト──┤
            |::::::::::::::::|     javaと一緒にさよなら
            !::::::::::::::::!
         イi゙、:::::::ハ!ヽ
        |゙'i  `i'´ /i
          i |  |  .|  i         _
        i' i  .|   |  i      ,,r ''~:::::::゙''ヽ、
        i キ====i  i     /::::::::::::::::::::::::::\
        i. /::::::::::::::::::i  i,    /》:::::::::::::::::::::::::::::::《i
         {_i::::::::::::::::::::::ヒ=ュ   i'":::::::::::::::::::::::::::::::::::゙i
        !~i::::::::___::::::::|сg---i::::::::::::::::::::::::::::::::::::::::::i
        `'「 ̄ ||  ̄i' ヾ::::::::,':::::::::::::::::::::::::::::::::::::::::::|
            |  ||  ,'   `'''y:::::::::::::::::::::::::::::::::::::::::::::|ヽ
         !.  i i  i'    ,':::::::::::::::::::::::::::::::::::::::::::::::|::::゙、
          i.  i .|  |     i:::::::::::::::::::::::::::::::::::::::::::::::::ト:::::゙、
        ├‐┤.|_|    |::::::::::::::::::::::::::::::::::::::::::::::::::|i \:i
           !  !. |  i    .|:::::::::::::::::::::::::::::::::::::::::::::::::::リ  ´
          |,,,,i | .,'    i、::::::::::::::::::::::::::::::::::::::::::::://
        ├'メ, |__i     ゙\:::::::::::::::::::::::::::::::::::/ '
         !、,,) .!,,」      >--、_,,r-r─‐'''<
もうもらっとこうか。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。