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

このエントリーをはてなブックマークに追加
1毛の生えたフサギコ
このスレッドは、

他のスレッドでは書き込めない超低レベル、もしくは質問者自身何が何だが
分からない質問を勇気を持って書き込むスレッドです。

Delphi使いが優しくコメントを返しますが、お礼はDelphiの布教と初心者の
救済をお願いします。
2毛の生えたフサギコ:03/07/22 09:47
くだすれDelphi(超初心者向け) (Part1)
http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html
くだすれDelphi(超初心者向け) Part2
http://pc2.2ch.net/test/read.cgi/tech/1053757982/
くだすれDelphi(超初心者向け) Part3
http://pc2.2ch.net/test/read.cgi/tech/1055986736/
3毛の生えたフサギコ:03/07/22 09:47
>>1 乙

  ∧_∧
  ( ´∀`)<ぬるぽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    |
     |        |        |   |
     |        | ∧_∧ |   |
     |        |( ´∀`)つ ミ |
     |        |/ ⊃  ノ |   |   Borland
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |
                        |
糞スレ立てんな死ね>>1
Dialogってなに
>>7
それだけじゃ
何を知りたいのかわからんですよ

もうちょっと詳しく
FileListBoxで
拡張子がexeのものしか表示しないようにするには何のプロパティを設定すればええの?
>>10
Mask

*.exe
クラスとレコードってどうちがうの
type
 TData = record
  x: Integer;
 end;

 TClass = class
 private
  FData: TData;
 public
  property Data: TData read FData;
 end;

という風にしたとき、TClass.Data.xまでも読み取り専用にすることは出来ますか?
クラスにするっきゃない
プライベート宣言
16デフォルトの名無しさん:03/07/22 17:19
ヘルプを眺めていて不思議に思ったので質問させてください
TRect = packed record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
となっています
型宣言でcaseを使っているので驚きました
どういう意味なんでしょうか
TRectの値に2通りの方法(TPointを使うかどうか)でアクセスできるのと関連があるんだろうと
推理しましたがそれ以上わかりませんでした
>>16
C の union(共用体) に相当
>>16
その推理で大体あってる
同じメモリ空間を異なる型として見ることができる
その例だと
|A|B|C|D|
というメモリ空間が確保されて
TRect.TopにアクセスするとBが返って来る
TRect.BottomRightにアクセスすると
TPoint.x:=C;TPoint.y:=D;と同じものが返って来る
ShellComboBoxの初期値はPathで設定すればいいみたいなのですが、
ShellComboBoxにくっつけたShellListViewにはそのPathが反映されません。
仕方が無いので、ShellListViewにも初期値を設定しようとしたのですが、
設定の仕方が分かりません。

どなたかご存知の方いらっしゃいませんか?
>>17
>>18
なんとか理解できました
ありがとうございます
ProgressBarのバーの色って変える方法ありませんか?
SendMessage(ProgressBar1.Handle, PBM_SETBARCOLOR, 0, color);
2319:03/07/22 19:35
ぐあー!
ShellListViewってZIPファイルをフォルダ扱いしやがる!
(;´Д`)
(;´Д`) ぐあー!
>>19
ShellComboBoxとShellListViewをリンクさせるには
ShellComboBoxのShellListViewプロパティか
ShellListViewのShellComboBoxプロパティで
対象を指定します

初期値はそれぞれのRootプロパティで指定できます
2619:03/07/22 19:48
>25
Rootに設定したら、初期値というより、
ルートフォルダになってしまったっぽい。
ShellComboBoxにその上のフォルダが出てこない…。

他のコンポに差し替えた方がいいかなぁ…。
自分でDelphiで作ったアプリ(A)に、他のアプリからFindWindow()->PostMessage()で
ユーザー定義メッセージを送ってます。
(A)を単体で立ち上げたときはメッセージをうまく受け取れるのですが、
Delphiの開発環境経由で、コンパイル→実行したときは、うまく受け取れません。
何か理由があるのでしょうか?デバッガがメッセージを横取りしてるとか。


>>16
説明を追加しとこう。

Integerとか0とか1とかの一見無意味な記述があるから驚いたのだろうけど、

TRec = record
case Tag: TEnum of enumA : (A: Integer); enumB : (B: Word; C: Word) end;

という記述も可能。
TagはTEnum型のフィールドとなり、Tag = enumAの時だけAの値が保証される、という感じに使う。
Pascal処理系によってはA,B,CにアクセスするとTagを見てエラーを出してくれるものもあったが
Delphiの場合はTagは単なるフィールド。
>>27
設計時のフォームに送られてるから。
MS社員も見てる2ちゃんねる

http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=735

> 「超初心者向け」コミュニティに関しては、運営方法を検討中です。
> コンセプトとしては、2ちゃんねるプログラマ板のかつての「モナーの *やさしい* Delphi質問スレ」やくだすれです。現在は参加者がレベルアップしたのか雰囲気が変わりましたが。
wara
メソッドとプロパティの違いは?

クリップボードではまってます。

var
i,n: integer;
hDrop: THandle;
szFile: array[0..MAX_PATH-1] of Char;
begin
if Clipboard.HasFormat(CF_HDROP) then begin
hDrop := Clipboard.GetAsHandle(CF_HDROP);
n := DragQueryFile(hDrop, $FFFFFFFF, szFile, SizeOf(szFile));
for i := 0 to n - 1 do begin
DragQueryFile(hDrop, i, szFile, MAX_PATH);
ListBox1.Items.Add(szFile);
end;
end;
end;

というようなコードを引用して、エクスプローラーでコピーしたファイル名の一覧を取得するところまでは、うまくいったんだけど、

ListBox1.Items.Add(szFile); を ShowMessage(szFile); にしたら、ループふた周り目でエラー。

ShowMessage(string(szFile));
これも駄目。

StringList.Add(string(szFile));
これも駄目。

何故!!!!!!!!!!!!!!!!

DelphiでBMSプレイヤーってつくれるん?
Quadruple DってコンポーネントみつけたんだけどDelphiは初めて2週間程度で
しかも持ってるのはPersonalだからどうしようもない。(´・ω・`)
Delphiの本もプログラミングテクニックとリファレンスブックしかもってないから
ぜんぜん分からん。

だれかレクチャーしてくれ。
PageControlで作ったtabsheetで
どれがアクティブか調べる方法を教えてください
よろしくお願いします
>>35
ShowMessage(PageControl1.ActivePage.Caption);
>>36
できました。
ありがとうございます
38デフォルトの名無しさん:03/07/23 14:22
>>32
その質問の真意は?
>>38
その質問の真意は?

お前らは黙って答えてりゃ良い。
4038:03/07/23 14:28
>>39
ごめん。意味がわかんないもんで。
じゃあオマエさん答えて
メソッドはプルセジャー
自分のPCに入っているダイレクトXのバージョンって
どうやればわかりますか?
>42
OSは?
>43
XPです。
WINのスタートメニュー⇒アクセサリ⇒システムツール⇒システム情報
ってやってからツール⇒DirectX診断てやればできないか?
>45
出来ました。ありがとうございます。
Delphiが地球と神殿柱のアイコンになった理由は何ですか
48デフォルトの名無しさん:03/07/23 20:02
>>46
Delphiを何の関係があるんだよ(;´д`)
>48
日本語変ですよ
delphiのプロジェクトを2個開きたいんですが、
1個目が閉じちゃいます。
どうすれば2個開けますか?
プロジェクトグループ作って、その2つのプロジェクトを追加しれ。
>>50
Delphi を 2 つ起動する手もある
>>33
各パスが、ぬる文字で区切られているんじゃなかったっけ?んで最後にぬる2つ。
変数の中身チェックしてみ。
クラスってなんなのさ
オブジェクトとかインスタンスとか親子とかレコードとか
わけわかんねーよ
そんな君にはHSPがお勧め。
親子って何?
TComponentの事じゃない?
>>54
ハートの形をしたクッキーを作りたいとき、
1.ハートの抜き型を用意します。(クラス)
2.生地をその抜き型でくりぬくとクッキーそのものができます。(オブジェクト、インスタンス)

基本はこんな感じですよ。
実際はリニアなものじゃなくて階層構造(=親子)になるんだけど、
人に説明するのってとっても難しいね。
>>54
3ヶ月くらい使ってたら何となく分かってくるよ
>>58
プログラミングでは極端な比喩表現は誤解を招きやすいのでいかがなものかと・・・
そもそも3行で説明できるはずがない(詳しい説明へのポインタを示すべき)

>>54
ttp://age.ne.jp/x/kazuhito/Delphi/delphi2.htm
ttp://www.artlex.net/gonta/jpn/objprog/
ttp://www.s34.co.jp/cpptechdoc/article/oo/
これでわからんかったら何がわからなかったのか質問しよう
6133:03/07/24 04:18
>>53
あ、ありがとございます。
寝て、働いて、帰ってきたら、ちぇっくしてみまず。
DelphiではC言語みたいに
A++=1みたいな書き方はないの?
絶対A:=A+1ってかかなきゃいかんの?
そうだよ。
馬鹿でも見たら分かるくらい分かりやすい書き方しかないよ
>63
C言語に比べりゃすごく不便だな。糞ツールDelphi逝ってよし
>>62
A++=1って何?
A+=1→A++ならInc(A)
A+=5ならInc(A, 5);
-=はDecやね
Inc使えよ
あ、かぶった
オブジェクト指向ってプログラミングを簡単にできるようにするために考えたの?
あれだけで、どこが不便なのか小一時間語ってもらいたいな
自作自演はフサギコスレの方だけでやってくれんか。
VBAでいうところの

On Error Resume Next

Delphiでは何と書けば良いのか、教えていただきたく
>>71
例外を無視して突っ切るって事?
一文毎に、次のように囲む。(ただし実際にこんなことやってるとこ見つけたら怒るけどな…)

try
 文
except
 ;
end;
7371:03/07/24 12:57
ありがとうございます
一文毎に、ですか。。。ツレーサギョウダス
とりあえずやってみます
別に一文ずつやる必要ないだろ。
MDIアプリケーションで、タブブラウザのように
子ウィンドウを常に最大化して表示し、タブでウィンドウを切り替えます。

子ウィンドウを作るときと別のウィンドウに切り替えるときに
一瞬もとのサイズのウィンドウが見えてしまうのですが、
そうならないようにするにはどうすればよいでしょうか。
>>75
どしてPageControlじゃダメなの?
Hide状態で最大化してから表示すればいいと思うけど
他のアプリケーションをALT+TABとか使ってアクティブにすると
強制終了するにはどうやったらいいんですか?
>74
try
 処理1
 処理2
 処理3
except
 :
end;

で、処理1でエラーがあったら処理2以降が実行されないから、
ってのが >71 の頭にあると思う。
auto_ptrみたいな参照カウントのためだけに
TInterfacedObject継承するのは違反ですか?
なんかうまくいってるんだけど・・・
elseの前にセミコロンがあってはいけませんとかでてきてうぜぇ
implementation

{$R *.dfm}

end.

この部分の
{$R *.dfm}←これって
何でコメントなのに消しちゃいけないの?
>>81
コメントじゃなくてコンパイラ指令(ディレクティブ)だよ
>82
{ }でくくってあるのにコメントじゃないんだー
デルハイの不思議
フォームを
Windowsのタスクバーよりも前に表示させたいんだけど、
どうすればできますか?
85デフォルトの名無しさん:03/07/24 20:13
Pchar型→string型に変換する方法を教えて下さい
>>83
$があるから
>>85
string(PChar変数); のようにキャストすればいいじゃん
>>84
FormStyle:=fsStayOnTop;
でTTimerで定期的にSetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);をする。
>>79
OK。
9071:03/07/24 21:08
>>78
おっしゃるとおりです
DelPhiパーソナル版買って3日目のトーシロってことで、
コードのみっともなさについてはひとまず見逃してください。

これまではAccessVBAしか使ったことがありません。
職場のDB、伝票発行から名刺作成まで、何もかもAccessで強引に
やっつけてきましたけど、そろそろ限界かな、と。

この先もたまにお世話になるかもしれません
>パーソナル版買って

…感動した。
しかしDB機能はPro以上にしか無いですぞ。
継承元がパブリックで公開してる静的メソッドを
継承先でプライベートに隠しちゃう事ってできないんですか?

TList継承して独自のクラスのみ格納できるListを作りたいのだけど
どうがんばってもfunction Add(Item: Pointer): Integer;が公開されてしまって
なんだかみっともないです
hasでやればいいのだろうけど、どう考えてもis関係ですよね・・・?
DL版パーソナルなのでVCLソースを参考にすることもできず
無理
TList継承スンナ
>>92
Delphi-MLで昔見たような気がしたんだが・・・鯖トラブルで過去ログが見れない
もしかしたらDDJだったかなあ
かなり汚い方法だけど一応できた記憶はある。
9695:03/07/24 21:30
>>92
オジサンはねぇ、TList継承しておいてAddを消したいっていうのはどうかと思うよ。
DB機能って何?
七つ集めると(ry
>>97
幻のD Builder
ボディー ビルダー
101デフォルトの名無しさん:03/07/24 21:47
>>87
あっさり変換出来たよ....鬱だ。
10287:03/07/24 21:51
多田のバカじゃん
>>101
超初心者スレだ。安心汁
>>102はニセモノ。士ね
>>96
いえ、Addを消したいのではなくて、
function Add(MyClass: TMyClass): Integer;
のみを公開したいんです
Pointerを引数に取れるのまで公開されちゃうと
何されるかわかったもんじゃないというか、poolproofというか

まぁダメそうなので素直にHasにします
フサギコってなに
>>106
良い子は見ちゃいけ・・・じゃなかった、興味を持っちゃいけません。
TList部分を全コピペするとよいかも。。
>>105
例えば、こんな手もあり?

TList2 = class(TList)
public
 function Add(Item: Pointer): Integer;
end;

function TList2.Add(Item: Pointer): Integer;
begin
 raise Exception.Create('呼んじゃダメよ');
end;

使用例)
var
 List2: TList2;
begin
 List2 := TList2.Create;
 List2.Add(nil); // ここで例外発生
 ...
 Dame(List2);
end;

procedure Dame(List: TList); // ← TList2 の親
begin
 List.Add(nil); // こんな使い方されちゃうとダメなんだけど
end;
前にRecordだかClassだかなんだかの基本的には変数をおくところに
procedureを書いてたのを見たことがあるんだが使い方の詳細を教えてくれない?
自分でもよくわかってないのでうまくかけないんで、察してくださいw
もしかしてこんなのかな?
〜 = record
i: Integer;
procedure MyProc;
end;
>110
record型はprocedureやfunctionを要素に出来ないよ。
class型ならできる。
型について、いまいちよくわかってないのかなー
type
TmyClass = class
i: integer
procedure MyProc;
end;

とclass型を定義してから
var
MyClass: TMyClassとやれば
MyClass.iやらMyClass.MyProcを利用できるさ
自分でもよくわかってないって行ってんだろカス
113110:03/07/24 23:06
>>111
なんとなくわかった気が。これから試してみます。
忘れ去られたころにまた質問するかもしれないのでそのときはよろしくでつ。
>112
わかってないっつーか、
レコード型とクラス型の違いくらいは覚えられるでしょう。

レコード型+手続き、関数=クラス型
115110:03/07/24 23:10

かんじわりー
type
Tnanasisan = record
resu : integer
tyuu : Boolean
end;

var
nanasisan : Tnanasisan
nanasisan.resu:=110;
nanasisan.tyuu:=true;
117110:03/07/24 23:25
>>115は人が違うんで。
TN = record
a: procedure(const Unko: String);
end;

var
N: TN;
begin
N.a:=ShowMessage;
N.a('Hello, World.');
end;
102=112=115
変なのが一匹紛れ込んでるね。

フサギコ師ね
>>110がいってるのってファンクタじゃないの?
TMyClass = class
 MyFunc: procedure;
end;
みたいな

こうしとくと
procedure Test();
begin
 //Do something;
end;
という関数があったとき、
MyClass.MyFunc := Test;
として「振る舞いそのもの」を変数に持てると思えばよろしいかと

こいつの存在意義は、状況によってMyFuncの振る舞いを変えたいときに、
換えたい振る舞いを実装した関数をMyFuncに代入してやれば良いという事
ファイルストリームとかの「ストリーム」って簡単に言えばなんですかー?
123知ったか:03/07/25 00:11
カタマリ。
>>122
流水。
まぁ先頭から末尾まで順番にアクセスすることしかできない配列と思えばヨシ。
ランダムアクセスもできるけど、それは本来的な使い方じゃないので注意。
途中から(末尾へ向かって)アクセスするのはアリ。
Imageコンポネントの
ある座標のR,G,B値を調べるにはどうやるの?
>>125
Image.Canvas.Pixels[x, y]でTColorが返って来る。しかも書き込める。
12775:03/07/25 01:22
>>76
PageControlでうまくできそうです。
ありがとうございました。
128デフォルトの名無しさん:03/07/25 01:34
>>90
パーソナルを業務上で使う貴方が勤めている犯罪企業の名前を教えてください
ていうかDBもロクに接続できないパーソナルを業務に使う猛者企業とは一体。
C#BはPersonalでも金出せば可になったから、Delphiもそのうち改定されないかな?
DBなんか独自のものを作ってやるんだよ。
C#は無料で自由に使える環境が既にあるし、
CSB1に限ってはPersonalでシェアウェアくらい作れないと誰も使わないような低レベルだし。
CSBはEnt買ってJavaアプリとのブリッジを作るもんですね。
Tinifileよくワカラン
実行ファイルと同じディレクトリに同じ名前でiniを作ったあと
そのiniファイルに
[test]
test=1
を作る方法教えて
>>134
ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
ini.WriteInteger('test', 'test', 1);
ini.Free;

どこがワカランのか全然ワカラン
WindowsAPIの説明も読んどけ
var ini: TIniFile;
>>105
Hasでやるべし
>>135
ありがd

>>136もthx
DelphiってどうしてC言語やVBよりも解説書とか少ないの?
人気ないの?
>>139
・Delphi やる人は C/C++ やってた人が多いから解説書がいらない
・初心者が質問してもそれなりに答えてくれる ML があるし、
 解説サイトもそれなりにある、
 そしてやさしい兄ちゃん達がいる「このスレッド」がある
・ソース付きフリーコンポが山のようにあるから、それを見れば勉強になる
それはね。
メガドライブってどうして売れなかったの?
セガサターンってどうして売れなかったの?
ドリームキャストってどうして売れなかったの?
ってのと同じなんだよ。

ダサキモかっこ悪人気無いの。
>>そしてやさしい兄ちゃん達がいる「このスレッド」がある
やさしいワンピースを着た色白な美少女もいる!
やさしいワンピースなどない
いちいちケチつけるためにこのスレを見張ってるおまえが一番キモい。
おれが二番
二つのプログラムがあるとしまして
A > B へ送信してBが何かを処理している間はAは動かない
という事をしたいのですが、どうすればよいのでしょうか・・・
146145:03/07/25 11:13
質問しつつあげてなかったのでageさせて頂きます
147_:03/07/25 11:19
>>145
モーダルダイアログ表示してる間はメインフォーム(呼び出し元)を操作できないようにしたい
みたいなことをしたいってこと?
149145:03/07/25 11:29
>>148
なるほどモーダルダイアログですか
ただいつ消すとかどうすればいいのだろうか・・・
150148:03/07/25 11:48
>>149
いや、「Bが何かを処理している間はAは動かない」の「動かない」の意味が
わからんかったんで >>148 のような意味かどうか聞いたんだけど。
15171:03/07/25 11:56
>>DBもロクに接続できないパーソナルを

いま確かめてみました。ロクに、というか、できませんね。
まあいいです。いまのところは練習用ですから。
DB以外にもつくりたいアプリは沢山あるし、DBについても、いま使ってる
ものが完全に限界を迎えるまでにどうにかなればいいかな、ぐらいの
感じで気長にかまえてます。
(そもそもAccessに感じていた限界ってのは、DBとしての限界じゃなく
それ以外のモノをつくろうとした場合の限界ですし)

ところで
変数の型ってのがけっこう厳格なんですね。
Suji:integer;
Suji:=12345;
ShowMessage(Suji);
とか書くと怒られる。
数字を文字に変換するやりかたってのも何だかよく分からず、仕方ないから
V1:variant;
Mojiretsu:string;
V1:='0';
Mojirestu:=Suji+V1;
ShowMassege(Mojiretsu)
なんてことをやってみましたけど、野暮にもほどがあるという感じで。

ま、何はともあれ昼休み。
(´-`).。oO(こんな奴が作ったDBって)
>>151
IntToStr(Suji);
Format('%d', [Suji]);
IntToHex(Suji, 8); // HEX
>>151
型チェックが厳しいとかいうから
同じArray[0..9] of Integerなのに代入互換性ない!とかいうのかと思ったら・・・
ま、こんな香具師でも運営できるAccessVBはスゴイ!ということか(笑)
厳格って言うか当たり前のことだろ
>>154-155
VB, VBA, VBScript, JavaScript, ActionScript,...
こんなあいまいなものがあるからいけない。許してやれ。
でもこれはこれで便利な面もあるけどな。
157デフォルトの名無しさん:03/07/25 12:46
DelphiやっててAccessVBA使うと、逆に型が不明確で困るけどな。
ヘルプ見ても型がきちんと書いてないのが多いし。
>>157
それは void* のような使い方したい場合に便利なんだが。
↑間違えた
>>150
Bが処理し終わったらAに適当に定義したメッセージ送ればいい。
デルファイを使ってアイボみたいなロボットってできる?
がんばれ
>>161
どの CPU が何か知らないから何とも言えないが難しいだろう。
まあファームウェアっていえば大体 C や アセンブラ使ってやるから
そっちを勉強した方がいいだろう。
PC の画面の中でやるだけならもちろん Delphi でもできると思う。
完成した暁には報告してくれるとうれしい。
Delphi6 使ってます。

grep の機能を実現するコンポーネントを探しています。
お薦めはなんかありませんか?
166デフォルトの名無しさん:03/07/25 23:54
パーソナルでもADOかなんか使ってDB出来なかったっけ?織れは
D6Proを使っているんだがそんな話を聞いた事があったような、
うろ覚えでスマソ。
ifとかcaseとか使わないでalign代入する方法ない?
ちょっと文字不足だった
ifとかcaseとか使わないでstringの変数にalign代入する方法ない?
169 :03/07/26 00:04
>>168
冗談抜きに、まだまだ文字が足りないと思うぞ。

つーか、文字って言うか?
170あぼーん:あぼーん
あぼーん
>>167-168

const
ALIGN_STRINGS: array[TAlign] of string = ('alNone', 'alTop', 'alBottom', 'alLeft', 'alRight', 'alClient');

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ALIGN_STRINGS[Align]);
end;

って意味?

単純に値(数値)なら
 IntToStr(Ord(Align));
とかできる。
>>169
スマソ
>>171
そういう意味
ありがとう
ListViewの特定のカラム内を入れ替えたいのですが、
どうすればいいですか?

StringGridの 
StringGrid.Cells[1,2] := 'age'; の様なことです。
ListView1.Items[1].SubItems[0] := 'age';
175?:03/07/26 02:59
176_:03/07/26 03:01
アイコンをWindows標準のものにするにはどうすればいいんですか?
function myfunc(): HRESULT;
var
 hr: HRESULT;
begin
 hr := 例えばAPI呼ぶとか
 if FAILED(hr) then 例外処理;
 hr := ・・・以下いくつか同じように
 Result := hr;
end;

と、こう書くのと

function myfunc(): HRESULT;
begin
 Result := 例えばAPI呼ぶとか
 if FAILED(Result) then 例外処理;
 Result := ・・・以下いくつか同じように
end;

と書くのとでは、パフォーマンスに違いがありますか?
確か関数の返り値って専用のレジスタに入るんですよね・・・?
>>178
戻り値が32ビット以内ならレジスタ(EAX)に格納されるようですが,
瞬時に何千何万回と呼び出されるのでなければ
パフォーマンスの差は無視しても良いように思います.
>>178
ブレークポイントしかけてCPU窓で見るがよろし
181164:03/07/26 10:30
>>165
ども。あと、こういうのも見つけました

http://www.hi-ho.ne.jp/~babaq/bregexp.html
C++ Builderとか見てみたらデルファイとそっくりやないか
183173:03/07/26 12:16
>>174
ありがとう
このスレ最高!!
>>182
言語部分が object pascal から c++ になったようなもん
ひとつのクラスに、100人の学生がいる。
100人のうち、70人がウドン好き
60人がソバ好き

このとき
ウドンもソバも好きじゃない人
ウドンのみ好きな人
ソバのみ好きな人
ウドンもソバも好きな人

のそれぞれの数の最大、最小を求めるプログラムはどうやってつくるの・・・?
>>185
数学を勉強してから作るの
先生!数学を勉強しなくても作れるレベルだと思います。
>187
さすがに小学生じゃ無理だろ
>>185
うどんとかそばとかのカテゴリで好き嫌いを語るのがナンセンス
関東風や関西風で全然別物だしそもそも学校で好き嫌いは許しません!!
小学生は算数を勉強しているッ!!
>189
それはプログラムに関係ないだろう
プログラムと食事とどっちが大事だと思っているんだ!!
ぷろぐらむ
ListViewの2行目を削除して
3行目以下を2行目以降に入れたいのですが
どうすればいいですか?
プログラムってあれだろ?
猫にノミがついた時に猫に飲ませるやつだろ?

プログラミングが出来るからと言って数学が出来るとは限らない。逆もまたしかり。
自動車を運転できるからといって自動車のエンジンのメカニズムなどをしっているとは
限らないってのと同じだな。
パソコンを使うためにメモリやハードディスクの構造を知る必要もないし。
>>194 ListView1.Items[1].Delete;
DMonKeyためしに使ってみてるんだけどどうやってスクリプトを実行させるの?

if DMonkey1.Compile('println("hello,world");') then
DMonkey1.Run;

これやってもHello,Worldって表示されない
標準出力を表示するコードがないからだろ。
201デフォルトの名無しさん:03/07/26 20:07
グラフィックイメージファイルにエフェクトを掛ける
コンポーネントありませんか?
デルファイを使ってデルファイが作られたって意味不明。
じゃあ一番最初のデルファイはどこから来たのさ・・?
203デフォルトの名無しさん:03/07/26 21:11
想像だが、Delphi1(最初の版) は Delphi0.1(非売品)で作ったんじゃないか。
その Delphi0.1 は Borland C++ かアセンブラで作ったと思われる。
Delphi0.1 は Delphi1 を開発するためだけのもの。
DelphiのIDEや周辺ツールがDelphi製。
じゃあ最初のIDEはテキストエディタだけで作ったんですか?
元を辿れば機械語
>>203
Delphi1はTurboPascal
TurboPascalの最初はアセンブラかハンドコンパイルとかじゃないの?
207デフォルトの名無しさん:03/07/26 21:42
MMTimerって、スレッドが別だからForm上のVCLを直接いじると破綻しますよね?
なので、精密さを要求するリアルタイム計算処理はMMTimerで行い、それ以外の画面表示はTTimerで行っています。

しかし、TTimerの精度が悪くて、他のスレッドの処理が重くなると簡単にブッ飛んでしまいます。
いい解決法はないものでしょうか・・・。
ブッ飛ぶってイベントハンドラが呼ばれないってこと?
そうだとしたら Sleep(0) してないからじゃねーの?
>>208
Timer内でやってるはずの表示が固まるので、呼ばれてないみたいです。

んで、sleep(0)とは?。・゚・(ノД`)・゚・。
>>209

(Win32 ヘルプより要約)

(Sleep 引数に) 0を指定した場合、 スレッドは、 実行準備ができている同じ優先順位のほかのスレッドにタイム スライスの残りを譲ります。実行準備ができている同じ優先順位のスレッドがなければ、 関数はすぐに戻り、 スレッドは実行を続けます。
INFINITE値を指定すると、 無制限に実行が中断されます。

ようするに他スレッドの処理ループの中で定期的に Sleep(0) を呼び出さないと
メインスレッドやその他のスレッドが実行されないままになっちゃう場合があるんだよ。
>>207
というかMMTimerって具体的に何?
timeSetEventならただのコールバック関数なので破綻しない
>>210
なるほど・・・!勉強になりました。試してみます。

>>211
VCLのライブラリで拾ってきたマルチメディアタイマーコンポーネントという奴で
「TMMTimer:マルチメディアタイマーをコンポーネント化したもの」らしいです。
(アクセス先はスレッドフリーでないとダメと説明書に書いてありました)
どうでもいいことだけど今日はじめてAPIのヘルプの存在を知った。
これからプログラミングしやすそう。
あの子垢抜けたね。
215デフォルトの名無しさん:03/07/27 00:01
ClientSocketとServerSocketについておしえてください。
クライアントの方でサーバーのIPとポート指定して繋がるところまでは出来たのです。
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject: Socket: TCustomWinSocket)
begin
  処理1
end;
として処理1は繋がったときに実行されたのです。

しかし、それだけで、クライアントからタイマーで定期的に送信しようとすると、サーバーの
procedure TForm1.ServerSocket1ClientRead(Sender 〜  …(1)
は実行されないのです。

クライアントの方で
ClientSocket1.Socket.SendText('ほげほげ')  ・・・(2)
が実行されないのか、上の(1)のプロシージャが実行されないのかと言うところで詰まっています。
(2)の1行前の処理は実行されているのですが…。

原因と解決策があればおねがいいたします。
>>215
メインフォームに TClientSocket と TServerSocket 貼り付けて
localhost で通信するようにしてみ。デバッグし易いと思うから。
コンパイラオプションの「デバッグ版DCU」にチェック付けて
VCL ソースにブレークポイント設定するとか、ステップ実行して
追ってくなりすればいいよ。
217デフォルトの名無しさん:03/07/27 05:30
>グラフィックイメージファイルにエフェクトを掛ける
>コンポーネントありませんか?

http://home1.infonia.ne.jp/~delphian/delphi/
Delphiで作ったアプリケーションは
Windowsのタスクバーを右クリックしても
元のサイズに戻す、最小化、閉じるの3つの項目しかないんだけど
普通のアプリみたいに
最大化、移動、サイズ変更もできるようにするにはどうやるんですか?
>>218
実は初心者じゃ無いでしょw

・GetSystemMenu(Application.Handle)に追加する
・ParentWindow = 0にしてForm1そのものをタスクバーに出す
・CLXを使う
など。
220デフォルトの名無しさん:03/07/27 15:57
例えば、IEを2つ起動して1つめのIEで画像を読み込んで、その画像をドラッグして
2つ目のIEにドロップすると2つ目のIEでもその画像が表示されますよね。
この1つ目のIEの代わりに、DelphiのTWebBrowserで同じことをしても、ドラッグ出来ないんですが、
これはどうすれば出来るようになりますか?
>>216
ありがとうございました。
無事に原因を特定することができました。
>>220
TWebBrowserを使わずにTEmbeddedWBを使う
「Delphi 2.0J 32bitパワープログラミング」って、まだ書店で手に入りますか?
秋葉原の書泉とLaoxを探したのですが、無かったので。
ヤフオク
225デフォルトの名無しさん:03/07/27 23:13
>>222
すいません、出来ればTWebBrowserで実現できれば文句ないんですが・・・
不可能でしょうか?
数学に関するアルゴリズムの本で良い本はないでしょうか?
>>226
君ものすごく広範囲な事いってるって気づいてる?
高校の教科書
>>226
公文式に通いなさい
230デフォルトの名無しさん:03/07/28 09:37
Delphi 6 Personalのライセンスキーの取得ができません。
なんだやの!
登録の最終確認のメールを送信しました。
きてない。
止まってるんですか?
Delphiは購入してください。そうしないとボーランドがつぶれて
MS一極体制になってしまいます。
232_:03/07/28 09:46
D6でのビジュアルスタイル対応についてまとめてるところありませんか?
「対応を謳ったコンポを使う」じゃ満足できません。
234デフォルトの名無しさん:03/07/28 11:16
循環参照を避けるためにimplementation部分でUnit1を参照すると、
Interface部分では、Unit1で定義されているクラスのオブジェクトを宣言する時は、
TObjectとかで宣言しないといけないですよね。

そのオブジェクトを使う時にいちいちキャストするのが面倒なのですが、
これはどうしようもないんでしょうか。
>>233
結果、同じものが出来るだけ。
236デフォルトの名無しさん:03/07/28 11:33
Delphiの限界が露呈しました。
>>234
C系だと複数ファイルにまたがる型宣言は
1つのヘッダファイルにまとめるのが通例
typedef.unitを作ってそこにまとめるべし
238デフォルトの名無しさん:03/07/28 11:55
C厨ウザイ。
>>238
Delphiでも同じ事するけどな。Windowsユニットなんて典型例だし。
240_:03/07/28 12:04
241234:03/07/28 12:06
>237

なるほど。そういう手を使うわけですか。
助言に感謝します。
242238:03/07/28 12:07
>>241
どうしたしまして。
>>243
どうも。
>>243
妙な再帰だな。
>>245
へ?
for レス := 1 to 1003 do
247デフォルトの名無しさん:03/07/28 13:31
>>230

アメリカのサイトに行って試してもるのも手です。
私も同じ症状になったのですが、あきらめてアメリカの
サイトから登録したらうまく行きました。
>>234
循環参照になるのがおかしい。
クラスってレコードと同じなの?
ぜんぜん違う
>>249



                  ヘ ル プ 読 め



Delphiでゲーム作るにはどうしたらいいの?
>>249
C#だと同じ
>>252



                  ヘ ル プ 読 め





デルファイやっておけばその知識は将来CとかJavaとかやるときも役に立つ?
もちろん
Delphiの本たけえ
3000円とか4000円とかする。
くだらねえCDROM入れてねぇで本安くしろよクズ。
他の本は2000円くらいでかえるのに。
本なんか必要ない。
Alt+F4キーを押してもアプリケーションが終了しないようにするにはどうしたらいいのでしょうか
260デフォルトの名無しさん:03/07/28 16:44
>>259
Alt and F4キーを無効にする
キーボードを無効にする
Alt+F4に他のキーを割り当てる
>>252
ゲームスレにいらっしゃい。
見本となるべきものはたくさんある。
>>261
urlキボン
>>262
氏ねベカ
>>255
Delphiスキル向上のためにはイヤでもCのソースを読むときがやってくるでしょう。
つーかDelphiなんて覚えるだけ無駄。
266デフォルトの名無しさん:03/07/28 17:15
つーかこのスレなんて見るだけ無駄
つーか馬鹿なんて息吸うだけ無駄
デルファイでモンテカルロ法のやりかたおしえてください
269デフォルトの名無しさん:03/07/28 18:10
StringをCharに変換するにはどうしたらいいんですか。
var
 s: String;
begin
 Char(s);
>>261
どこ?
>>272
あいかわらずクソ板だな
Delスレもゲームの話はせずに初級FAQだけ
苦し紛れにそんなものを紹介するぐらいなら素直にあやまっとけ
このスレが上級だからそう見えるだけだ
Lunaスタイルの時に、メニューバーとツールバーは若干見た目が違うけど、
メニューバーの方を表現する方法を教えて欲しい。
ホットトラック(?)で反転色、角有りのやつ。
276ひろゆき:03/07/28 20:37
Delphi7を買えばVisual Styleに対応できるらしいと云いますです。。
Form1(Unit1)とForm2(Unit2)を関連付けようと
usesで両方を付け加えたら
循環参照エラーになるんですがどうしたらいいでしょうか?
片方をimplementationに
自分でusesに追加するときはimplementationの下のusesを優先的に使うといい
と思い込んでる俺
ボタンコンポーネントのOnClickイベントを
Enterキーでは発動しないようにするにはどうやったらいいのでしょうか?
新規作成したフォームには、implementation部にusesがないので、
しばらく気がつかなかっ遠いた記憶有り。

var
 Form1: TForm1;

implementation

{$R *.dfm}

uses unit2;

procedure
ライブラリ的なunitはinterfaceのusesに書けばいんじゃない?
出来るだけ循環参照をしないような作りを目指そう!
ボタンコンポーネントのOnClickイベント
-----
if GetKeyState(VK_RETURN) >= 0 then Enterキーでは発動しない文;
284デフォルトの名無しさん:03/07/28 22:29
Delphi6 personal でインターネット通信したいのですけど Indy のページ
http://www.nevrona.com/Indy/download/index.html
でダウンロードが分かりません。
ファイルの落とし場所を教えてください。
メインからスレッドを作って、並列で処理させてるとき、
メインフォームを閉じるときに、まず先に作ったスレッドを止めないとえらいことになりますよね?

こういうとき、たとえば、メインのonCloseから明示的に止めるとか解放するとかしないといけないのでしょうか?
それとも、Terminatedを逐一チェックして、終わったみたい → 自分もやめ、でいいんでしょうか?
>>273
そこ紹介するのは、適切だと思うけど。
というか、むしろDelphi依存のゲーム話って何?
アルゴリズム的な話は、スレ違いだし、
DirectXなんかの話なら、スレに出てるし・・・?

実際にオレ、両方の板でレスつけてるんで、
>>262>>271の人はきてもぜんぜんかまわんよ。
ああ、スマンスマン。
もし、「クソ板だ」といいたいだけだったなら、流してくれ。

それにしても、ゲーム製作関係はよくクソにしたがるヤツが多くて困る。
>>284
そのページの下のほうにあるべ。
聞く前に、よく読みましょう。

>>285
WaitForメソッドでスレッドが終わるまで待つことが出来ます。
ただし、スレッドから抜ける処理を行ってからWaitForしないと永久に終わらなく
なるので、確実にスレッドが終了するようにしましょう。
ゲロゲロナビゲーツのやり方知りませんか
>>284
インスコの方法がわからんならそう家
じゃなければ
Indy9
http://www.nevrona.com/indy/downloads/Indy_9_00_14_src.zip
ついでにモナジラでもみとけ

>>286
*見本となるべきもの*が見あたらなかった

>というか、むしろDelphi依存のゲーム話って何?
だから何故そんなスレを紹介するのかと問うている
ソースを晒して糞にもならない感想をもらうだけの場所にみえる
しかもDelphiですらないものまで散見される
避難所じゃないほうはシツコイ妨害で完全停止

とにかくゲ製作板がいいかげんな回答者のせいでQ&Aすら機能しなくなったことを自覚して欲しい
>>287みたいな逃げ口上ばかりでまるで同人ノウハウ板をみているようだ
>>290
不満ならお前が率先すればいいだけだろ?
しかも、向こうで提案して来いクズ。
それすらも出来ないで、グチグチ言うなよ厨房。
↓なにごともなかったように夏休みの宿題が終わった方から質問どうぞ!!
↑indyの全部のコンポの使いかたを教えてください
↑ダブルクリックするだけ
Delphiって素敵だな
>>288
サンクスー
ただ、作ったスレッドはループしてるので、本体が存在するか?を毎回チェックしたほうが良さそうですね・・・。
↑何が起こるか教えてください
(´-`).。oO(隔離病棟から患者がでてきちゃったなぁ)
この時期、俺の巡回コースはどこもシーズンインザサンだ。
299デフォルトの名無しさん:03/07/29 04:09
>>290
リンクありがとうございます。
そこからファイルは落とせたのですが、Indyがうまくインストールできません。
http://members.jcom.home.ne.jp/monazilla/document/indysetup.htmlを参考に
しているのですけど、手順3.を実行すると
[致命的エラー] IdDsnBaseCmpEdt.pas(21): ファイル 'DesignIntf.dcu' が見つかりません
となります。
どうすればインストールできるでしょうか?
>>299
とりあえずモナジラをみろ
話はそれからだ
>>290
> >>287みたいな逃げ口上ばかりでまるで同人ノウハウ板をみているようだ
そっくりそのまま、あなたに返そう。
すくなくとも俺は、もりあげようとしている。

それであなたは、何をした?
>>301
話をそらさずに*見本となるべきもの*きぼん
TBitmapでHandleTypeがbmDIBでPixelFormatがpfDeviceの場合、
どっちを信用すればいいのでしょうか・・・。
先日入門したばかりの者です。
 
いくつかのサイトを回って、定番の"Hello world"と電卓は何とか作れました。
少しずつスキルアップできればいいと思っているんですが、ネタが無くて行き詰まって
しまいました。
将来的にはゲームの1本でも作れればと思ってますが、現状ではとても無理なので、
小さいプログラムをいくつか作って経験を積みたいと思ってます。
 
そこで、先輩諸氏に「こんなプログラムを組めばスキルアップにつながる」といった
課題を提示してもらえればと思ってます。
よろしくおねがいします。
305デフォルトの名無しさん:03/07/29 10:46
>>304
ぶっちゃけ作る方法を覚えても、創造できる力が無ければ無意味
>>305
日本語不自由なヴァカ発見

Q.「こんなプログラムを組めばスキルアップにつながる」
A.「ぶっちゃけ作る方法覚えても、創造できる力が無ければ無意味」

電波電波〜(藁
307デフォルトの名無しさん:03/07/29 11:06
体育大会のシーズンです。4ブロックに分かれて人文字パネルで
応援合戦をします。パソコンで人文字パネルの絵柄をシミュレートしてください。

○ 例えば、横25人、縦15人が並んでスタンドに座っています。笛の合図で
  パネルの色を変えます。色はパネルをめくって、1人で3色から4色変更します。
○ 画面にマス目を表示して、マウスのクリックで一人一人の色を確定して、絵柄をつくり、
  アニメーション効果で人文字がきちんと出来ているか確認できるようにする。
  絵柄は最大50枚登録出来るようにする。

○ 完成したら、A4の紙に色の変化のパターンを印刷する。

  つまり、座席A1番の人は @赤→A赤→B青・・・・・というように
  メンバー全員にむけて、一人一人パネルの後ろに貼り付けて確認できるようにする。

体育大会が9月13日に予定されていますので出来れば8月第2週までに作ってください。

   
                 緑ブロック人文字長 近藤さやか 
308近藤さやか:03/07/29 11:10
スタンドの並び方は

横 20人から40人、縦 10人から20人

最初、この範囲で選択できるようにしてください。
309デフォルトの名無しさん:03/07/29 11:22
さっさと こたえろ くそやろう
310_:03/07/29 11:22
311デフォルトの名無しさん:03/07/29 11:23
DelphiとJavaってどっちがすごいのですか?
312デフォルトの名無しさん:03/07/29 11:32
【速報!!!】田代まさし再々再(・∀・)タイーーーーーーーーーーーーーーホ!【神】
http://mbspro8.uic.to/user/9248.html
314デフォルトの名無しさん:03/07/29 13:18
MDIアプリを作ろうとしています。
親フォーム自体が、別のフォームから作られた時、
子フォームが作成できません。
「有効なMDIフォームがありません」
というメッセージが出ます。

Form1のButton1Clickで
OyaForm := TOyaForm.create(self);
OyaForm.showmodal;

OyaFormのButton1Clickで
ChildForm := TChildForm.create(self);//ここで上記の例外が出る。
ChildForm.show;

Form1から呼び出せるMDIアプリケーションを作るにはどうすれば良いでしょうか?
(Form1とOyaFormは親子関係にはしていません)
>>314
経験あり。Delphiの限界でした。
>>314
VCLの限界なので、MDICLIENTウィンドウをCreateWindowしてガンバレ
317314:03/07/29 14:29
>>315
え?どうやってもできないんですか?

普通のフォームで親フォームクリックしたら、子フォームが非アクティブになるし、
親フォーム自体、統合ソフトのいち機能だから、独立したMDIアプリには出来ないし。

どなたかお助けあれ〜。
318316:03/07/29 14:41
MDIってのは要するにウィンドウが入れ子になってるだけの状態。
それに、標準でMDICLIENTってウィンドウが、メニュー周りの世話をしてくれる。
VCLは、メインフォームがMDIの親になるのを前提とした設計なので、
自前でMDICLIENTをCreateWindowすればOK。
ParentWindowだのVisibleまわりで細工はいるかも知れんけど。
(最悪、メニューを自前で更新して子ウィンドウのアイコンや[X]ボタンも自力で書く根性があれば、
MDICLIENTすら使わずにMDIは実現できる)
アダルト激安DVDショップ!1枚500円〜!


http://www.netdedvd.c-o.jp/

320314:03/07/29 14:58
>>316
>>318
レスありがとうございます。
あまりWindowsのAPIを直接使う事がないので、
ピンと来ませんが、なんとかやってみます。
PARADOXテーブルのデータをDB DESKTOPで一括処理しようと思ったのですが、
SQLで小数点以下を切り捨て/切り上げ/四捨五入するにはどうしたらいいですか?
322314:03/07/29 16:17
>>318
CreateWindowで作った子フォーム(Window)に
コントロールをのせたり、OnClickに処理を書くには
やっぱりAPIを使う(かなり面倒な)事になるのでしょうか?
>>321
ここはDelphiスレなわけで…コードを書けばなんとでもなるんだけど
データベースデスクトップでやらなければならない理由が知りたかったりもする
324デフォルトの名無しさん:03/07/29 16:25
Delphi7の新しい機能を盛り込んだ、おすすめの書籍を紹介して下さい。
325デフォルトの名無しさん:03/07/29 16:25
☆無修正画像&サンプルムービーをどうぞ!!☆
http://yahooo.s2.x-beat.com/linkv/linkv.html
326299:03/07/29 16:27
>>300
見てもわかんないッす
インストールできなくて辛いので、もうおしえてちょ
日本の夏。厨房の夏。
デルファイで赤ちゃんは作れますか?
>>268
乱数ルーチンなら、ヘルプの
VCLリファレンス>ルーチン一覧(カテゴリ別)>乱数ルーチン
に載ってるよ
Delなんていらねえよ、夏。
>>290, >>300
Monazillaの情報はすでに古いものになっていたよ…

>>326
Indyインストール手順
・Sourceフォルダの.batファイル(Delphi6ならFulld6.bat)を実行
・コンポーネント>パッケージのインストール>追加>フォルダの.bplファイル(Delphi6ならD6\dcIndy60.bpl)を開く
・OK
332デフォルトの名無しさん:03/07/29 21:43
ひとつ知恵を貸してください。

TStringGridってあるじゃないですか。
このグリッドを継承して使ってセルによっては数値を入れたり文字を入れたりするとします。
文字は左寄せ、数値は右寄せで表示するのはTStringGrid.DrawCellをオーバライドする事で実現出来たのですが、
入力時にも左右に寄せるのってどうするのでしょう?
入力用のテキストエディットボックスのTInplaceEditを継承してCreateParamsの設定でES_RIGHTとすると
入力時にも右寄せにはなるのですが全セルの入力で右寄せになってしまい、ありゃ?といった所です。

TInplaceEditも内部的にはCreateWindowExしているのでしょうから一度作ってしまうとwindowsのテキストエディットの制約で
文字位置の左右はもう変えられないと思いますが始めに幾つかのTInplaceEditを作っておいて切り替えるとすれば
どうすれば良いのでしょうか?
333ないと:03/07/29 21:51
質問です。
TEditコンポーネントを拡張して、
本文中にあるURL(http://ではじまる?)の色をかえ、
それをクリックした時にブラウザで開くという
コンポーネントを作るにはどうしたらよいのでしょうか?

Delphi6です。
>>333
取りあえずTRichEditつかおうや。
335ないと:03/07/29 21:59
>>334
色をつけるのにTRichEditが必要だってことでしょうか?
>>335
必要じゃないがお前程度の奴は
馬鹿でも色をつけられるTRichEditを
使っていればいいってこった。
337ないと:03/07/29 22:03
>>336
了解。(´・ω・`)
TComponent使え
TMediaPlayerで簡易プレイヤーを作っています。

DeviceType := dtAutoSelect;
Open;
AutoRewind := True;
Play;
という流れで再生を開始して、OnNotifyイベントでPlayしています。

これで、数10秒のMPEG1ファイルをパネルコンポーネント上に連続再生できるのですが、
ウィンドウを最小化して再生すると、OnNotifyイベントのところで固まってしまいます。
何とかならないものでしょうか?
340つーか:03/07/30 00:15
>>333
「TEditコンポーネントを拡張して」と、「本文中にある」がよく分からん。

「本文」?一行にズラーーーっと並んだ文字列からってこと?
341デフォルトの名無しさん:03/07/30 00:18
いろいろな言語を検討しているのですが、10人くらいで同時アクセス可能なC/Sデータベースシステムをデイルファイで開発可能ですか?
>>341
好きな答えを持ってけ↓
1.出来ます。
2.出来ません。
>>341
同じものをPerlで組めるくらいの技術力があればできるんじゃない?
つーかなんで既存のDBシステムじゃだめなの?
クライアント作るだけならたいした技術いらないよ?
>>341
100人くらいならDelphi+Firebirdでいけるべ
hoge : array [0..n] of Tbitmap

でビットマップの配列を作ってから実体を代入したとき、hoge.freeで全部消えますか?
それとも、for文でn回それぞれ hoge[i].free しないといけませんか?
>hoge.free
単なる配列はオブジェクトではない。そんなことできませんよ。

>for文でn回それぞれ hoge[i].free しないといけませんか?
限りになく正解に近い。
ア、ヤパーリ(;´Д`)サンクス!
「n+1回だろ」と突っ込んでおく
349299:03/07/30 01:29
>>331
インストールできてコンポーネントパレットに追加できました。
ありがとうございました。

ところで、TNMHttpが見当たらないのですが、TNMHttpは初めから含まれていないのでしょうか?
http://otori12.tripod.co.jp/jane2ch.src.zip

ソースの説明
最新Viewベース
でも2-293さんのソースを使ったり
いろんな人のソースを参考にしました

GexpertsのTo Do ListにConfigerを追加することで何処を改造したかわかる
嫌ならConfigerで検索

調整してないので非doeには多分未対応


>>350
思いっきり誤爆した
スマン
Delphiの検定試験あるよ
http://psc.borland.co.jp/training/bpcindex.html
353339:03/07/30 11:35
一歩だけ前進しました。

Playメソッド完了後のOnNotifyイベントで、何も考えずに再度Playメソッドを
呼んでいたのを

if NotifyValue = nvSuccessful //直前のPlayメソッドが正常終了なら
Play;

としてやることで、ウィンドウを最小化しても、Play完了後のOnNotifyで
固まらなくなりました。

ちなみに、固まる時のNotifyValueの値はnvAborted(ユーザーによって
コマンドが強制終了された)になっていました。
ウィンドウを最小化したことが原因なのでしょうが、
どうしてそれが強制終了にあたるのかはちょっと分かりません。

そのため、依然として強制終了でOnNotifyが呼ばれることがあり、
その時は固まりはしないのですが、タスクバー内のタイトルバーが
ブリンク状態になってしまいます。

ウィンドウの最小化がPlayの強制終了を引き起こさなければ、
解決できると思うのですが、何か解決策はありませんか?
354デフォルトの名無しさん:03/07/30 11:39
こんにちは。Del6Personalを使い始めた者ですが、

以下の内容のCSVファイルがあるとき、

"1","トマト","野菜","6"
"2","きゅうり","野菜","100"
"3","バナナ","果物","33"
...

先頭にタイトルを入れて
"ID","商品","種別","在庫数"
"1","トマト","野菜","6"
"2","きゅうり","野菜","100"
"3","バナナ","果物","33"
...

というものを作成して別ファイル名で保存したいのですが、
どうしたらよいでしょうか。
「ファイルを開く」ところまではWEB上などを調査して何とか
行き着いたのです。
どなたか方法をご存知の方、お願いします。
Addというメソッドをヘルプで検索
357デフォルトの名無しさん:03/07/30 12:02
StringGridのスクロールバーの幅のサイズを変更するにはどうすれば良いですか?
さすがDel厨。馬鹿だな。
>>355
TStringList.Insertとか

var hoge: TStringList;
begin
  hoge := TStringList.Create;
  hoge.LoadFromFile('hoge.csv');
  hoge.Insert(0, '"ID","商品","種別","在庫数"');
  hoge.SaveToFile('newhoge.csv');
  hoge.Free;
end;
360デフォルトの名無しさん:03/07/30 18:30
動的に作成したコントロールの描画順位(前面、背面)を変更したいのですが、
どうすれば良いでしょうか?
361_:03/07/30 18:34
>>360
BringToFront / SendToBack あたり
363デフォルトの名無しさん:03/07/30 18:39
アダルトDVDが
 最短でご注文いただいた翌日にお届け!
 http://www.dvd-exp.com 開店セール1枚 500円より
>>357
Delphi-ML:65498からのスレッドに書いてある
365デフォルトの名無しさん:03/07/30 22:58
あるダイアログ内にあるテキスト型オブジェクトで利用しているフォント名を
取得するにはどうすればよいのでしょうか?
よろしくお願いします。
ダイアログ.テキスト型オブジェクト.Font.Name
昨日から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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。