くだすれDelphi(超初心者用)その17
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その16
http://pc5.2ch.net/test/read.cgi/tech/1089779142/
<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0154デフォルトの名無しさん
NGNGprocedure TForm1.Button1Click(Sender: TObject);
var
Ia,Ib,Ic,SumSq:integer;
rt:Extended;
begin
for Ia := 3 to 99 do
for Ib := Ia+1 to 100 do begin
SumSq := Ia*Ia + Ib*Ib;
Ic := Round(Sqrt(SumSq));
if SumSq = Ic*Ic then
Memo1.Lines.Add(Format('a : %d b : %d c : %d',[Ia,Ib,Ic]));
end;
end;
0155デフォルトの名無しさん
NGNGrt はいらない
0156144
NGNGそれをもとにAdvancedCustomDrawSubItemの部分に以下のようなコードを書きました。
ListView_GetSubItemRectマクロを使用して、棒グラフを表示させたい部分の
Rectを取得して。
Rect.Top = Rect.Top + 1;
Rect.Bottom = Rect.Bottom - 1;
として棒グラフの幅を調整
そして
//<注1>
Sender.Canvas.Pen.Color = clBlue;
Sender.Canvas.Rectangle(Rect);
とすることで、Rectの幅どおりに中が塗りつぶされていない四角形を書くことができました。
そして次に上記の<注1>の部分をそっくり以下のコードに入れ替えました
Sender.Canvas.Brush.Style := bsSolid;
Sender.Canvas.Brush.Color := clBlue;
Sender.Canvas.Rectangle(Rect);
ところがRectを無視して、棒グラフが描画されるべき欄は真っ青になってしまいます…
Rect.Top = Rect.Top + 1;
Rect.Bottom = Rect.Bottom - 1;
をいくら調整してもその変更が反映される様子はありません…
いったいどうなっているのでしょう? どなたかアドバイスよろしくお願いいたします。
0157142
NGNG154さん、本当にありがとう☆☆☆
0158デフォルトの名無しさん
NGNGDefaultDrawがtrueだからでは。
変更されたBrushを使ってデフォルトの描画をされてしまうからね。
0159デフォルトの名無しさん
NGNGSender.Canvas.Brush.Color := clBlue;
Sender.Canvas.Rectangle(Rect);
Sender.Canvas.Brush.Style := bsClear; // これを加えてみるとか
0160デフォルトの名無しさん
NGNGなるほど、わかりました!
>>159さんのコードで解決することができました!
0161デフォルトの名無しさん
NGNGわかりません。。。
どなたか教えてください。
お願いします。
0162デフォルトの名無しさん
NGNGIsLeapYear 関数
0163161
NGNGできますか?
0164デフォルトの名無しさん
NGNG0165142
NGNGピタゴラス定数を満たすa,b,cが何組あるか、
その総数を出力するプログラムを作るには、
どんな関数を使ったらいいんですか?
それと、総数もメモの欄に出力することはできますか?
何度も質問すいませんけど、教えてください。。
0166デフォルトの名無しさん
NGNGhttp://www.echizenya.co.jp/mini/colum/uruudosi.htm
1.西暦年が4で割り切れる年は閏年とする。
2.西暦年が4で割り切れる年でも、100で割り切れる年は閏年としない。
3.西暦年が4で割り切れ、100でも割り切れる年でも400で割り切れる年は閏年とする。
これをコードで表現する
0167デフォルトの名無しさん
NGNGprocedure TForm1.Button1Click(Sender: TObject);
var
Ia,Ib,Ic,SumSq:integer;
count:integer;
begin
count := 0;
for Ia := 3 to 99 do
for Ib := Ia+1 to 100 do begin
SumSq := Ia*Ia + Ib*Ib;
Ic := Round(Sqrt(SumSq));
if SumSq = Ic*Ic then Inc(count);
end;
Memo1.Lines.Add(IntToStr(count)+'個ありますけど');
end;
0169161
NGNGなるほど、ありがとうございます。
えーと、これをコードで表現しようとして、EditとBottunを一つずつ作って、
ShowMessageで閏年かどうかを示そうと思ったのですが、Edit1に入力した数字を
Bottun1のif文で使うにはどうしたらいいかがわかりません。。。
どうしたらいいのでしょう?
それとも、別の方法のほうが良いのでしょうか?
よろしくお願いします。
0170デフォルトの名無しさん
NGNG>Edit1に入力した数字をBottun1のif文で使うにはどうしたらいいかがわかりません。。。
なんだか文章がピタゴラスの人と同じですね。宿題をこの際かたずけるつもりですか。
文字列から数値に変換するには StrToInt() を使う。
整数のわり算のあまりを求めるには mod を使う。以上、ヒント
0171142
NGNG本当に・・・。
0172デフォルトの名無しさん
NGNGそれは失礼。祈る健闘。
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG017519
NGNGTTableのTableNameのドロップダウンリストを見ようとすると、Oracleに接続されていません。
と表示されてしまいます。
32bit Administratorではデータベースにきちんと接続できて色も変わっているのですがなかなか。
エリアスはドロップダウンリストから選択しているのでタイプミスなどは無いです。
0176デフォルトの名無しさん
NGNGテーブルへのアクセス権ってある?
0177A
NGNGそのページによると、
>2.FA-21,FA-11を意識させない透過的な接続:
>
>FutureNet FA-21,FA-11を使ってもPC上のソフトウェアに変更は必要ありません。
>RS-232を持つ装置とPCとの間の通信は透過的(ソフトウェアから見るとFA-21,FA-11は存在しない)に
>おこなわれ、PC上のソフトウェアは PCの COM ポートへアクセスするのと同じインタフェースで
>実現できます。
って書いてあるね。
てことは、PCからは、それはイーサネットではなく、RS-232Cとして見えているはずだから、
Delphiのほうも、RS-232Cとして、扱ってやればいいんだと思う。
とりあえず、Delphian World ( http://home1.infonia.ne.jp/~delphian/delphi/ )の、
Networkのコーナーに、「Delphi4用 RS-232C 通信コンポーネント」ってのがあるのは
見つけた。
こいつが、Delphi5でも動くかどうか、とか、どうやって使うのか、とかは、私にはわからないので、
あとは、がんばって自力か他の人に聞いてみて。
017836,41
NGNGやっと出来ました。
ありがとうございます。
TBitmapで書いたイメージをTPaintBoxに書き込みことは出来たのですが
Tbitmapが大きなサイズのとき、TPaintBoxに一部が表示されます。
スクロールバーで表示されていない場所を表示するようにしたいのですが
どのようにやるのでしょうか
0180178
NGNG色々やってみましたが、TPaintBox と TScrollBox はくっつかないような気がします。
間違えていましたらすみません具体的に教えてください。
0181デフォルトの名無しさん
NGNGScrollBox を貼り付けて適当なサイズに調整し、その中に PaintBox を
貼り付ける。
Bitmap のサイズを決めるときに PaintBox のサイズも変更する。
PaintBox が大きくなるとスクロールバーが自動的に出てくると思う。
描画は PaintBox の OnPaint イベントの中だけで行うこと。
描き直すべき領域は ClipRect でわかるので (座標の原点は見えている
部分に関係なくクライアント領域の左上)、その部分だけ描けばいい。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG拒否或いは受け入れをを遅延させるにはどうすれば良いのでしょうか
0184デフォルトの名無しさん
NGNGClose
0185デフォルトの名無しさん
NGNG手軽にMouseDownを使えるようにするにはどうすればいいのでしょうか?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGコンポーネントにすると大量に作り変えないといけないので、
現存のプログラムに追加する感じでコード上に書き足す程度の方法がいいのですが
そう言った方法ってないのでしょうか。
0188デフォルトの名無しさん
NGNGそもそも TComboBox でどうして OnMouseDown イベントがほしいの? それも大量に?
0189デフォルトの名無しさん
NGNGただ上位クラスから継承する簡単な方法があればいいなと思いまして。
0190デフォルトの名無しさん
NGNG1件だけあったけど今は見れないようで。
0191デフォルトの名無しさん
NGNG>Comboがマウスダウンを検知してくれれば
だから、なにをしたくて検知したいの?
0192デフォルトの名無しさん
NGNGあるのかないのか聞いてるんですよ。
ちょっとうざい。
0193A
NGNGフォームをテキストで表示、ソースとフォームの
TComboBoxを全てTMyComboBoxに置換。とかは?
0194A
NGNG何の為にやりたいのかがわかれば、
別の方向からの解決法があるかもしれない。
なんでわざわざ、不必要な情報隠蔽するんだ?
結局、損をするのは自分なのに。
前みたいに、「ある」とか「できる」だけの無意味なレスで埋まってるのがいいのか
0195デフォルトの名無しさん
NGNG別回答が出てくる場合もあるから、詳細を書いた方がいいと思う。
0196195
NGNG0197デフォルトの名無しさん
NGNG結論から言えば簡単ではないがやろうと思えばできる。
Style が csDropDown または csSimple のコンボボックスは複数の
ウィンドウで構成される複合コントロールなので継承クラスを作らずに
実現するのは非常に難しい。
複合コントロールでない場合は型キャストで OnMouseDown に手続きを
割り当てるだけで可能なはず。
019819
NGNGマシンを再起動したらできるようになりました。
スマソ
0199お馬鹿な回答者の為の回答フロー
NGNGif あるなら then
その方法を提示;
if ないなら or 現実的でないなら then
begin
直接的な解はないと回答
while さらに別の方法が必要か? do
一段階上位の要求を聞きだして、その方法を提示
end;
0200真・お馬鹿な回答者の為の回答フロー
NGNGバカな質問者は無視。
end;
0201デフォルトの名無しさん
NGNG>if あるなら then
> その方法を提示;
今回はここまでは行っている。でも、質問者はそれ以上に<簡単にできる>こと
を望んでいる。やりたいことがあるのは分かるけど、その目的を明らかにしない。
そういうのは無視が一番。
0202デフォルトの名無しさん
NGNG行ってないだろ。いきなり別解に突入してる。
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG上は標準のWebBrowserのバグ修正版みたいなの。下はMozilla版
http://www33.ocn.ne.jp/~takoyakusi/delphi/UIWebBrowser/
http://www02.so-net.ne.jp/~rando/mozilla/
海外制のもあって2chブラウザ(確かぞぬ)で使ってたはず。
興味あるなら調べてみたら。
0205デフォルトの名無しさん
NGNG継承してコンポ作れってかなり一般的で単純明快でまともな回答じゃねぇか
どこが別解なんだよ?
先のことを考えずに設計したのが悪いんだろ?
超初心者スレだから設計が下手なのは仕方がないが、
情報隠蔽しながら、より簡単な解を求められても対処のしようがない。
まぁ、何はともあれ
あとは>>202が引き受けてくれるそうです。よかったですね^^
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGクラス派生による差分コーディングとthrowにより行数が少ないのに高機能安定動作。
VBのイベントハンドラコピペソースはサイアク。
0208デフォルトの名無しさん
NGNGオブジェクト・インスペクタ最高!!!
特にイベント
0209デフォルトの名無しさん
NGNGどうして愛する自スレをこうも容赦なく荒らせるんですか?
初心者なので分かりやすく教えてください。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG.NET 2.0 Betaを使ってみて、VCL.NETを使おうかと本気で検討中。
このスレにいる使ったこともなく語る人たちは信じられないだろう。
.NETライブラリの互換性って、クラス名、メソッド名が同じなだけで、動作はだいぶ違う。
いま1.1でできているものが、2.0でデザインが崩れたりチラツキが出たりしている。
修正したくてもクラスライブラリがsealedやinternal使ってて無理。
バージョンがあがるたびにこれほど変更されるくらいなら、VCLの方がマシ。
いや、VCLも.NET 2.0以降まで対応するという前提で。
0212デフォルトの名無しさん
NGNGVCL.NETヨサゲ
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG砂漠で目玉焼きでも作ってろ(藁
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNGVB超初心者スレに変更だ。
0220デフォルトの名無しさん
NGNGVB使いの方が人口多いし、そうした方が有意義だね
0221デフォルトの名無しさん
NGNGどう見てもMessageDlgの勝ち。
0222デフォルトの名無しさん
NGNG氏にました。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGTSpinEditのCreateParamでES_RIGHTを追加してもだめだったんだけど。
0225デフォルトの名無しさん
NGNGエンプラ版ではできるぞ。もっと貢げよ。(ゲラ
0226224
NGNG0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG0232A
NGNG別に継承だけでコンポーネントとして登録しなくてもいいけどね
それが一番簡単な方法だと思う
フォームソースの方の書き換えがいやなら、
生成後にインスタンスをすりかえるとか。
ただ、先祖が公開していた物を、わざわざ隠してあるってことは、
そこには触れて欲しくないってことだろうから、
何らかの副作用が有るかもしれないけど。
あと、どうしても、既存のソースをいじりたくない、いじるのが面倒ってのなら、
継承も置き換えもせずに、やる方法も有るには有る。
ただし、継承を使う方法よりもずっと面倒で遠回りだけど
0233デフォルトの名無しさん
NGNGpublic property OnMouseDown;
end;
TMyComboBox(ComboBox1).OnMouseDown := ...
でいけるよ。動作保証も推奨もしないけど。
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG前に俺も悩んだんだけどDelphi広場で検索すると似た様なのが見つかるよ。
確かHalbowがレスつけてて神を感じたような記憶がある。
0237デフォルトの名無しさん
NGNG荒れてたのでちょっとへこんでました。
テストしましたら>>233と>>236のサイト先のどちらの方法でも検知する事ができました。
0238デフォルトの名無しさん
NGNG0239178
NGNGありがとうございます、そしてごめんなさい
TScrollBoxとTScrollBarを勘違い色々いじくっていました。
>181
>描画は PaintBox の OnPaint イベントの中だけで行うこと。
>描き直すべき領域は ClipRect でわかるので (座標の原点は見えている
>部分に関係なくクライアント領域の左上)、その部分だけ描けばいい。
ここの部分がよくわかりませんでした。
TImageでPicture.Bitmapに代入することでとりあえず目的は達成しましたが
もう少し教えてもらえないでしょうか
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGTCustomComboBoxで定義されたフィールド・プロパティにアクセスしている限り正しい動作が保証される。
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGPaintBox が ScrollBox よりも大きくなると PaintBox のうち
見えてない部分が発生する。それでも PaintBox.Canvas の座標の
原点は PaintBox の左上になるということ。
OnPaint イベントは WM_PAINT の呼び出しによって発生するが、
PaintBox に来る前に古くなった領域と PaintBox のクライアント
領域が重なり合う領域だけにクリッピングされているので、
ClipRect の外側は描画しなくてもいいということ。別に描画しても
まったく問題はないが、時間のかかる描画を行う場合、その部分を
省略することで高速化が図れる。
TImage は Picture が変更されるたびに Invalidate を呼び出して
Image 全体が古くなったことにするので、ドットを 1 つ打つだけでも
全部を描き直すことになる。
0245デフォルトの名無しさん
NGNGどなたかお願いいたします。
0246A
NGNGGetLogicalDrives APIを使うといいらしい。
詳しくはここに。
ttp://homepage1.nifty.com/MADIA/delphi/Win32API/GetDrives.htm
0247デフォルトの名無しさん
NGNGありがとうございます!やってみます!
0248247
NGNG0249デフォルトの名無しさん
NGNGコピペで使えるようなサイトないでしょうか?
0250デフォルトの名無しさん
NGNGBSD互換APIなら山のように転がってるだろ。Cだけど
0251デフォルトの名無しさん
NGNGいや、だからCなら知ってるの。
それをDelphiで書いてあるのがほしいの。コピペしたいの。
0252デフォルトの名無しさん
NGNG寧ろ返答者側が夏真っ盛りだな。
■ このスレッドは過去ログ倉庫に格納されています