モナーの *やさしい* Delphi質問スレ Ver2
■ このスレッドは過去ログ倉庫に格納されています
0001DELモナー
NGNGDELモナーがどんな厨房疑問でもやさしく答えます。
DELモナは時に私であり、時には別の人。
他のスレに書き込んで罵倒される前に、まずここで質問しよう。
∧ ∧
( ´∀`)( )
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG全部買って12万程度だよ 全部買ったら?
DelphiによるWindowsプログラミング入門 綿貫 啓一 (著) <1995/12/1< 日刊工業新聞社 :¥1,845
Delphiプログラミング大全 Programmer’s SELECTION ジェフ ダンテマン (著),<1995/12/1< 翔泳社 :¥5,631
Delphiパーフェクトマニュアル―ボーランド公式 チャールズ カルバート (著),<1996/3/1< インプレス :¥5,631
やさしいDelphi 村上 宣寛 (著) <1997/6/1< 日刊工業新聞社 :¥2,200
Delphiで作る高速CGI 田原 孝 (著) <1998/12/1< エーアイ出版 :¥3,200
ここまでできる Borland Delphi4パワーガイド 小出 俊夫 (著),<1999/4/1< 秀和システム :¥2,800
Delphi Win32 APIリファレンス Ascii books John Ayres (著), 光田 秀 (翻訳) <1999/5/1< アスキー :¥8,800
使いながら覚える Borland Delphi4プログラミング入門 やさしいWindowsプログラミング 竹田 英雄 (著) <1999/5/1< エーアイ出版 :¥2,500
Delphi 4プログラミングバイブル マルコ カントウ (著),<1999/6/1< インプレス :¥5,680
Borland Delphi4オフィシャルコースウェア クライアントサーバシステム構築編 Inprise公式コースウェアシリーズ 真木 保 (著) <1999/7/1< アスキー :¥5,200
DelphiでWindowsゲームを作ろう! 青山 学 (著) <1999/7/1< ピアソン・エデュケーション :¥3,400
Delphi4プログラミング技法〈Vol.2〉コンポーネントとDBの実践テクニック Borland Press ザビエル パチェコ (著),<1999/8/1< ピアソン・エデュケーション :¥5,700
これで完璧!Delphi5裏技170選 金井 利美男 (著) <1999/10/1< エーアイ出版 :¥2,800
基礎からわかるDelphi5 三原 幸一 (著) <1999/10/1< 秀和システム :¥2,400
Delphi Object Pascalリファレンスブック アンク (著) <1999/11/1< 技術評論社 :¥2,480
Delphi5実践データベースプログラミング―DBコンポーネントとQuickReportの活用 田中 和明 (著) <2000/6/1< カットシステム :¥3,800
Delphiデータベースアプリケーション開発ガイド―データベースフレームワークから帳票作成、Oracle8i入門まで 三原 幸一 (著) <2000/6/1< 秀和システム :¥2,800
Delphi & C++Builder即戦力コンポーネントライブラリ―Windowsプログラミングの効率アップ 中島 信行 (著) <2001/1/1< CQ出版 :¥3,000
Delphi Win32 Graphics APIリファレンス ジョン アイレス (著),<2001/3/1< アスキー :¥8,800
Delphiクイックリファレンス レイ リシュナー (著),<2001/5/1< オライリー・ジャパン :¥4,500
Delphi 魔法のTIPS 500 Programmer's Bible Series EXPERTGIG開発室 <2001/8/31< エキスパートギグ :¥8,500
Delphi6プログラミングテクニック裏技180選+新機能20選 金井 利美男 (著) <2001/9/1< エーアイ出版 :¥2,980
VBユーザーのためのDelphi6プログラミング 佐藤 親一 (著) <2001/12/1< オーム社 :¥2,600
Delphi DB&Webプログラミング 松浦 健一郎 (著), 司 ゆき (著) <2001/12/1< ソフトバンクパブリッシング :¥3,200
Borland Delphi 6オフィシャルコースウェア (応用編) Borland official courseware series 井上 勉 (著) <2002/1/1< アスキー :¥4,800
Borland Delphi 6オフィシャルコースウェア (基礎編) Borland official courseware series 服部 誠 (著) <2002/1/1< アスキー :¥2,800
Delphiゲームプログラミングのエッセンス 日高 徹 (著) <2002/1/1< ソフトバンクパブリッシング :¥3,400
0155デフォルトの名無しさん
NGNG>山本 秀樹 (著)
この本廃刊だけど良い本だと思ってるの自分だけかな?
0156デフォルトの名無しさん
NGNG良い本だと思うけど、 お勧め出来るかどうかはその人の経験とか色々で違うからな
0157デフォルトの名無しさん
NGNGこれ、Delphi1用。
続編がDelphi2.0J 32ビットパワープログラミング。
いい本だけど、枕になる可能性もある諸刃の剣。初心者にはお薦めできない。
それ以降のは邦訳は出てないけど、原書の方はあるらしい。
0158デフォルトの名無しさん
NGNGそもそも戻り値っていう概念が有るのだろうか・・・
0160Delフサギコ
NGNGミ ゚Д゚ミ < 何がいいたいん?>>158
(ミ ミつ)ビシッ\_________
〜ミ ミ
∪ ∪ カオアラッテ デナオセ
function AAA: Integer;
begin
Resutl := 666;
//AAA := 666;
end;
0161デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGCも古いですけど。
0164161
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGBorlandのサイトには複数行表示できる物が載っていますが、
WordWrapできる複数行 TStringGrid はどこかにないでしょうか。
今は TDrawGrid を継承して、自力で描画しています。ところが、
TStringGrid のように、各セルに文字列を関連付ける方法がわからなかったため、
OnDrawString というイベントを作って、その都度書きこむ文字列やフォントを
指定しています。
0167デフォルトの名無しさん
NGNG多子化Cの一年先輩だった気がする。
アセンブラマンセーのリッチーらにオモチャってコケにされたんだっけ?
0168Delphi初心者
NGNG疑問�@
type
TForm2 = class(TForm)
Button1: TButton;
この場合Button1はパブリッシュメンバーになるのですよね?
疑問�A
type
TMyClass = class(TObject)
0169168=Delphi初心者
NGNG疑問�A
type
TMyClass = class(TObject)
hoge : TList;
この場合hogeは何になるのでしょう?
{$M+}の時はバブリッシュ? それともいつでもパブリック?
特に問題は無いのですが気になって…
0170デフォルトの名無しさん
NGNG>OnDrawString というイベントを作って、その都度書きこむ文字列やフォントを
>指定しています。
そこまでできるならコンポーネントにできるだろうに。
抽象化能力が足りないのかな?でも自分で作って自分で使うのなら
それでも良いと思うよ。
0171デフォルトの名無しさん
NGNGタブを利用したプログラム(同じタブを沢山)で
オブジェクト(ボタンとかリストとか)を動的に作成したいのですが
その場合は
タブに含まれるオブジェクトを格納するクラスを作って
新しいタブを作るときに動的配列にそのクラスを生成すればいいのですか?
0172デフォルトの名無しさん
NGNG0173Delフサギコ
NGNGミ,,゚Д゚彡 < 今日は冷えるね
,;゙ ミ \_____________
ミ. ミ
/゛゛゛゛
>>168-169
�@publishというよりpublicですが
あまりButtonの属性は気にせずにどぞ。
DelphiIDEが管理する部分なので
自分でコード書くときはprivateとかpublicとか
に書くようにしませう。
�Aちゃんとprivateとかpublicのトコに移動
させて、くださいな。
publicとpublishってオブジェインスペクタに現れる
かどうかだけだからButtonやhogeは
public族生だと思われ。
0174168=Delphi初心者
NGNGあわわ、すみません とりあえずRTTIが有るのか調べてみます。
0175デフォルトの名無しさん
NGNG各オブジェクトのparentをTABページにすること。
0176168=Delphi初心者
NGNGすみません 寒い質問ばかりで…(汗
色々調べたのですがやはり{$M}に左右される様です。
{$M+}だとパブリッシュ で{$M-}でパブリックのようです。
>publicとpublishってオブジェインスペクタに現れる
>かどうかだけだからButtonやhogeは
>public族生だと思われ。
これはpublishedだとメンバが呼び出されていなくても
実行コードに埋め込まれる点を除いて同じようです。
#RTTIに載るメンバのコードは必ず実行コードに含まれるようです。
HELPには{$M-}の状態で{$M+}でコンパイルされたクラスの
派生クラス以外はPublishedメンバを作れませんと書いてあるし…
(Del5)
うーん TP3→TP5→Del1→Del5 と某社の使ってますが
HELPの難解度は変わりませんね(w
0177Delフサギコ
NGNGホントに気温が低いって言いたいだけです。
. ̄ ̄∨ ̄ ̄ ̄
. ∧,,∧ 質問内容はスッキシして
ミ ゚Д゚ ミ いいと思うです
(ミ ミ) というか、凄い事追求されてますのね。
〜ミ ミ
∪''∪ ゴメンヨ マギラワシイ コメントデ
俺の部屋、1Fなので
床下から冷えがね。結構、くるのよ
ああ、寒い寒いわ〜
0178名無しヘタぐらま ◆B18Bks.Y
NGNGボーランドのサイトにあるTipsってこれですよね.
http://www.borland.co.jp/tips/delphi/dh011/sgrid_1.html
ワードラップは壱カ所いぢるだけで出来ます.
Options := DT_EDITCONTROL;
これを
Options := DT_NOPREFIX or DT_WORDBRAK;
に変えればOK(のはず).
☆ ☆
DT_WORDBRAK がワードラップ指定で改行コードの処理もやってくれます.
DT_NOPREFIX はワードラップには全く関係ありませんが,
これを入れないとたとえば
"Tom&Jerry"は"TomJerry"となってJに下線がつきます(メニューの表示みたいになる).
DrawCellEx については詳しくはここをご覧になるとよいでしょう.
http://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_drawtextex.htm
ワードラップのほかに位置合わせもできるAPIなので覚えておいて損はないでしょう.
0179168=Delphi初心者
NGNGうう。。深読みしすぎました すみません(汗
ブランクが長かったのとWinベース(Del)になってからちゃんとクラス型のことを
調べずにやってたandちょっと暇が出来たので最上位クラスから見直そうかと思い
色々やってます。
ってか HELPを読み直すと「クラスメンバーの可視性」でちゃんと書いて有りました(鬱
でも「パブリッシュメンバー」の最後の説明はよくわからない(w
TP5やってたからなんとなくわかるけどDelからいきなり始めた人はOOPを覚えるの
大変じゃないのかな?OOP周りのHELPが殆ど無い&ボロボロのような気が…
俺がアフォなだけという可能性が高いですが(鬱
0180166
NGNGうう、わざわざありがとうございます。
でもごめんなさい、超重要なことを忘れてました。
どうして悩んでるかといえば、WORDWRAP 自体には、それほどの問題はないのです。
問題は、
「WordWrapされた文章が常に全部表示されるように、その行の Height を自動調整したい」
ことなんです。Drawイベント時に、その行に含まれるセルの中で、最も
Height を必要としているセルを割りだし、そのHeight値を得て、その行のHeightを設定しています。
でも、すごく処理が重くなってしまうのです。たまに再描画されないときもあるし、
最後の1行(セルの行ではなく、セルに含まれる文字列)が表示されないときもあるしで…
最終的に何がしたいのかというと、
(1) Gridコントロールの横幅にあわせ、一番右側のセル列の幅を自動調整する(横スクロールバーを出さないように)
(2) 各セルに表示された文字列を、セル内での横スクロールをしなくても読めるように、WordWrapしておく。
(3) 各セルに表示された文字列を、セル内での縦スクロールをしなくても読めるように、セルの高さを自動調整する。
(4) 各セルにフォント情報を埋め込めるようにする(Cells[x,y].Fontみたいに)
こういう事をしたいのです。
いや、「なら、つくれよ」といわれれば確かにその通りですし、
作ったのですが、どうにも効率が悪いような気がして…
018143です
NGNG今は参考書なども購入してなんとか調べつつ作っている状況でございます。
完成度はだいたい90%くらいでもうすぐ終わりそうなんですが、
結局今日も懲りずに質問に参った次第でして…。
最後にGUIアプリによくある「実行ファイルにファイルをドラッグ&ドロップすると
ファイルを読み込む」と言うのを実装しようと思ってます。
んで自分なりに調べた所、前にやってたVBだと
command.comから引数を取ってなんちゃら…と言うのがあったと思ったので、
Delphiでもそれを応用してみようと思ったのですが、
…いかんせんまだ初心者なんでどうにも調べようがなく…(;´Д`)
(Memoコンポーネントにドラッグ&ドロップするのは出来たんですが)
厨房的な質問ではございますが、ご教授頂ければ幸いです。
>>52さん
私も学校の課題で自分しか学んでないのでかなり孤独です。
VBに詳しい友達となんとか手取り足取りやってますが、
やっぱり噛み合わない部分も多かったりでいろいろ疲れますな(笑
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGName1 := ParamStr(1);
Name2 := Name1 + ' ' + ParamStr(2);
if FileExists( Name2 ) then FileName := Name2 else
if FileExists( Name1 ) then FileName := Name1 else
FileName := '';
とか?
0184デフォルトの名無しさん
NGNG>(4) 各セルにフォント情報を埋め込めるようにする(Cells[x,y].Fontみたいに)
StringGridならObjectsプロパティを利用するのがいいのだろうけど、DrawGridにはないのか・・・。
Grid系って妙に重いような気がするので、1から作っちゃった方がいいかもしれない。
昔、マインスイーパーをDrawGridで作ったらゲームにならなかったのでPaintBoxで
描画するように作り直した覚えがある。
0185デフォルトの名無しさん
NGNGフォームを継承するような場面で、そのユニットには.DFMを持たせずに
下位クラスの別.DFM で初期化させたい時とかには手動で書いたりしますけど
後、RTTIを使って 列挙型の文字列を取りたい時くらいかな
0186デフォルトの名無しさん
NGNG0187186
NGNG018843
NGNG沢山の回答ありがとうございます。
やはりParamStrを使うのですな。(182,183さん)
187さんのGetCommandLineと言うのも良さそうなので、
とりあえず自分なりに解釈して頑張ってみます…。
ハマったらまたお世話になるかもしれません(;´Д`)(ぉ
018943@ハマリ中
NGNGParam関数において、
ParamStr(0)が実行ファイルのパス、
ParamStr(1)がその後に続く値、
ParamStr(2)がその後…と言う感じに続くのであれば、
Windowsの[ファイル名を指定して実行]で行うコマンド…
つまりはメモ帳にパラメータを追加して実行するみたいに
notepad testfile.txt
↑ ↑
ParamStr(0) ParamStr(1)
と解釈して良いのでしょうか?
それだとParamStr(1)に対する処理を書けば良いのかな?
と思っているのですが…。
0190デフォルトの名無しさん
NGNGIDEの実行メニューの実行時引数に色々入れて試してみては?
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGなら
ParamStr(0) = c:\windows\notepad.exe のようにフルパス
ParamStr(1) = testfile.txt
ParamStr(2) = this is a pen.txt のように " は除かれる
019343@ハマリ中
NGNGでは、空白の入るファイル名に関して特に懸念することは無いのでしょうか?
0194デフォルトの名無しさん
NGNGためしにやってみれば判るが 複数ファイルを同時にD&Dしても自動的に""が付いて
Delphi側で除かれるから
019543@ハマリ中
NGNGしばらく作業してみます。
0196名無しヘタぐらま ◆B18Bks.Y
NGNG×→DrawCellEx
○→DrawTextEx
×→Options := DT_NOPREFIX or DT_WORDBRAK;
○→Options := DT_NOPREFIX or DT_WORDBREAK or DT_EDITCONTROL;
>>180
文字列グリッド(TStringGrid)で作ってみました.Delphi4以降専用です.
(セルごとのフォント指定は実装していません)
フォームに文字列グリッドを貼り,グリッドのAlignプロパティをalClientにして,
フォームのOnCreate,OnResize,グリッドのOnDrawCellイベントハンドラ
およびUpdateCellHeightsメソッドを以下のように書きます.
const
cDefaultDrawTextOptions = DT_NOPREFIX or DT_WORDBREAK or DT_EDITCONTROL;
procedure TForm1.FormCreate(Sender: TObject);
var
aRow, aCol: integer;
begin
for aRow := 0 to StringGrid1.RowCount - 1 do
if not (aRow in [1, 4]) then
for aCol := 0 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[aCol, aRow] := format('This cell is %s 行 %s 列', [
StringOfChar('R', aRow), StringOfChar('C', aCol)]);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
// グリッドのセルの幅の変更…(1)
StringGrid1.DefaultColWidth :=
StringGrid1.ClientWidth div StringGrid1.ColCount - StringGrid1.GridLineWidth;
// グリッドのセルの高さの変更…(3)
UpdateCellHeights;
end;
(つづく)
0197名無しヘタぐらま ◆B18Bks.Y
NGNGprocedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
StringGrid1.Canvas.FillRect(Rect);
// ワードラップして描画…(2)
DrawText(StringGrid1.Canvas.Handle, PChar(StringGrid1.Cells[ACol, ARow]),
-1, Rect, cDefaultDrawTextOptions);
end;
// グリッドのセルの高さの変更…(3)
// フォントやセルの文字列を変えたときにはこのメソッドを実行してください.
procedure TForm1.UpdateCellHeights;
var
aRow, aCol, MaxHeight, aHeight, MinHeight: integer;
aRect: TRect;
begin
MinHeight := StringGrid1.Canvas.TextHeight('gM');
for aRow := 0 to StringGrid1.RowCount - 1 do
begin
MaxHeight := MinHeight;
for aCol := 0 to StringGrid1.ColCount - 1 do
begin
aRect := Bounds(0, 0, StringGrid1.ColWidths[aCol], 1);
// ワードラップして描画したときの高さを求める
aHeight := DrawText(StringGrid1.Canvas.Handle,
PChar(StringGrid1.Cells[aCol, aRow]), -1,
aRect, DT_CALCRECT or cDefaultDrawTextOptions);
if aHeight > MaxHeight then
MaxHeight := aHeight;
end;
StringGrid1.RowHeights[aRow] := MaxHeight;
end;
end;
0198デフォルトの名無しさん
NGNG音が出ない形で表示されちゃうんだけど、
これはなぜでしょう?
一応、検索してみたけどヒットしないみたい…。
0199198
NGNG普通に表示されます。不思議…?
0200デフォルトの名無しさん
NGNG直接レジストリを見に行かないとできないんでしょうか?
0201誰か教えてくれよぉ〜
NGNGとケチつけやがった、そこで、ActiveX版も作ってやろうとした、
ActiveXなんて初めての挑戦だったのだが、Borlandのホームページ見ると
VCLコンポから簡単にActiveXが作れるような事が書いてあった。で、
新規作成の所でActiveXコントロールを選択しても、VCLの欄に俺のコンポが
出てこないのだがなぜ?(他のは出てくるし、俺のもEditから派生させた
のは出てる)非ビジュアルコンポってActiveXにできないのか?
0202デフォルトの名無しさん
NGNG継承元をTComponentからTWinControlかTCustomControlに
0203誰か教えてくれよぉ〜
NGNGやぱし、そーなの?助かったよ、ありがと。これでAccess野郎も喜ぶだろう。
でも、継承元がTComponentなコンポはなぜ出てこないの?継承元が単純すぎるから?
0204デフォルトの名無しさん
NGNGクライアントがサーバに接続している際、クライアントプログラムを一方的に強制終了すると、サーバ側ではエラーにならず、切断イベントが発生していました。が、
自作サーバクラス内に TServerSocket を組み込んで使用したところ、
クライアント側が強制終了するとエラーが発生するようになってしまいました。どこがいけないのでしょう?
type
TReportEvent = procedure (Sender:TObject; AText:string) of object;
TChatServer = class( TComponent )
private
{ サーバソケット }
Server: TServerSocket;
FOnReport:TReportEvent;
procedure SetPort(const Value: Integer);
protected
{ TServerSocketのイベントに関連付けるイベント手続き }
procedure OnClientConnect(Sender:TObject;Socket: TCustomWinSocket); virtual;
procedure OnClientDisconnect(Sender:TObject;Socket: TCustomWinSocket); virtual;
procedure OnClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);virtual;
{ ステータスやログ等を出力 }
procedure Report(AText:string);
public
constructor Create( AComponent: TComponent ); override;
destructor Destroy; override;
procedure Open;
procedure Close;
property Port:Integer write SetPort;
published
property OnReport:TReportEvent read FOnReport write FOnReport;
end;
const
SocketErrorMessage:array [TErrorEvent] of string = (
{eeGeneral} 'ソケットは,どのカテゴリにも属さないエラーメッセージを受け取った',
{eeSend} 'ソケット接続に書き込もうとしたときにエラーが発生した',
{eeReceive} 'ソケット接続から読み出そうとしたときにエラーが発生した',
{eeConnect} '接続要求が完了できなかった',
{eeDisconnect} '接続を閉じようとしたときにエラーが発生した',
{eeAccept} 'クライアント接続要求を受け付けようとしたときに問題が発生した',
{eeLookup} 'LOCKUP ERROR'
);
0205デフォルトの名無しさん
NGNG{ TChatServer }
procedure TChatServer.Close;
begin
Server.Close;
end;
constructor TChatServer.Create(AComponent: TComponent);
begin
inherited;
{ Server の生成と設定 }
Server := TServerSocket.Create( Self );
Server.ServerType := stNonBlocking;
{ イベントの関連付け }
Server.OnClientConnect := Self.OnClientConnect;
Server.OnClientDisconnect := Self.OnClientDisconnect;
Server.OnClientError := Self.OnClientError;
end;
destructor TChatServer.Destroy;
begin
Server.Free;
inherited;
end;
0206デフォルトの名無しさん
NGNGprocedure TChatServer.OnClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Self.Report('[接続] /アドレス:'+Socket.RemoteAddress);
end;
{ クライアントが切断した際に発生(TServerSocketに関連付けられるイベント) }
procedure TChatServer.OnClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Self.Report('[切断] /アドレス:'+ Socket.RemoteAddress );
end;
procedure TChatServer.Open;
begin
Self.Server.Open;
end;
procedure TChatServer.Report(AText: string);
begin
if Assigned( Self.OnReport ) then
Self.OnReport( Self, AText );
end;
procedure TChatServer.SetPort(const Value: Integer);
begin
Server.Port := Value;
end;
procedure TChatServer.OnClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
Self.Report( '[エラー] '+ SocketErrorMessage[ ErrorEvent ] );
end;
0207デフォルトの名無しさん
NGNGちょっと漠然としてる感じがします。
1.「サーバ側ではエラーにならず、切断イベントが発生していました」というのは
どういう条件だったんですか?
2.どんなエラーが発生するんですか?
3.エラーをトラップして切断イベントの代わりにはできないんですか?
0208デフォルトの名無しさん
NGNGFormよりForm内のコンポーネントが大きい場合にす小ロールバーが出ますよね。
そのスクロールバーのサイズってどう取得すれば良いんでしょうか?
ButtonSizeもSizeも0なので困っています。
後、タスクバーのWindowクラス名ってなんになるんでしょうか?
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNGTMemoでファイルから読み込み表示するときに、
特定キーワードのみ文字色を変えたいのですが、
どうすればよいでしょうか。ヒントだけでも教えてください。
0211デフォルトの名無しさん
NGNGシェアウエアとかのエディターコンポを使うのが簡単なように思うんですが?
0212デフォルトの名無しさん
NGNGTRichEdit使えば。
0213デフォルトの名無しさん
NGNG俺はTEditor使いだが。
0214デフォルトの名無しさん
NGNGあと(いつか)できたらソース付きで公開したいので、
シェアウェアとかフリーウェアを使わないでやりたいと思ってます
0215デフォルトの名無しさん
NGNG自分でビュアー作った方がマシなくらい難しい
0216デフォルトの名無しさん
NGNGと、言うかテキストボックスってオーナードローできるの?
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGエディタ部分が分離可能な設計にしましょう
CLXベースで一から自作するんならそうでなくてもいいが。
0219ねこま
NGNGGetSystemMetrics ?
0220デフォルトの名無しさん
NGNG試してみます。
0221デフォルトの名無しさん
NGNGできました。助かりました。
0222デフォルトの名無しさん
NGNGfunction TTestOCX.REC(var fpRec:WideString):Integer;
begin
fpRec:='2ちゃんねる';
result:=0;
end;
-------------- vb -----------------
dim tmp_rec as string
dim rc as integer
rc=TestOCX.rec(tmp_rec) <--- tmp_recの中身は空になってる
0223デフォルトの名無しさん
NGNGええとど忘れした・・・とにかく VBから読める使える型にしてやっておくれ
0225224
NGNGスレ汚しスマソです・・・
0227198
NGNGどなたかTWebBrowserでobjectタグのメディアプレーヤ埋め込み型で
音が出ないことについて知ってる人はいないですかね?
自分だけなのかな?
TWebBrowserでは音声不可になる…ってことはあり得るのかな?
0228名無し
NGNGhHWND := FindWindow('TMainForm', nil);
hHWND := FindWindowEx(hHWND, 0, 'TPanel', nil);
hHWND := FindWindowEx(hHWND, 0, 'TPanel', nil);
hHWND := FindWindowEx(hHWND, 0, 'TTabControl', nil);
としたところ、0が返ってきてしまい上手くいきません。
どこらへんがマズイでしょうか?
メインフォームにパネルが幾つか貼ってあり、その中の一つにまたパネルが貼ってあり、
そのパネルにタブコントロールが貼ってあるという状況です。
0229デフォルトの名無しさん
NGNGActiveXでVBに渡すなら、WideStringじゃなくて普通にStringでいいだろ
0230ねこま
NGNG0231198
NGNGおっ!レスあるとウレシイですねー。
えーと、「音声のみ」不可となって表示されるんですよ。
動画(メディアプレーヤ自体も)は出るんです。
が、「音出ないよ」のマークになっちゃってるんですよねー?
もちろん、その動画(mpeg)は音あるし、IEで見るとちゃんと
音出るんです。不思議…??
0232222
NGNG>>223 VBで使える文字列の型がいまだに探し出せません(;;)
>>229 ocxの場合、DELPHIのStringは駄目だと思いますが、WideStringだから
駄目ってのはアリですか?単にプロパティで設定された条件により文字列を
返したいだけなのですが・・・。
0233貧乏人
NGNGすごく短命でしたな。それほど浸透してない(?)ってことだろうか?
あの4800円くらいするデカイ本を本屋で見た。デカかった・・・。
欲しかったけど、高いなー。基礎編の方は割と必要なさげだった。
アレはエロゲーパッケージに通ずるデカさだ(藁
0234デフォルトの名無しさん
NGNG> どこらへんがマズイでしょうか?
たぶん、複数のパネルのうち TTabControl がのっかっているのと
ちがうのが最初に見つかるためでしょう。
以下の FindClassInChilds( ) 関数では、直接の子のほかに
孫、ひ孫...も検索して、指定のクラス名のウィンドウハンドルを
返します。見つからなかったらゼロを返します。
type
pFindData = ^TFindData;
TFindData = record
ClassName:string;
FindHandle:HWND;
end;
function GetClassNameString(hWindow:HWND):string;
var
p:PChar;
ret:integer;
begin
GetMem(p,100);
ret := GetClassName(hWindow,p,100);
SetString(result,p,ret);
FreeMem(p);
end;
function EnumCldProc(hWindow:HWND;Data:LParam):Boolean; stdcall;
begin
result := true;
if GetClassNameString(hWindow) = pFindData(Data)^.ClassName then
begin
pFindData(Data)^.FindHandle := hWindow;
result := false;
end;
end;
function FindClassInChilds(hParent:HWND;ClassName:string):HWND;
var
FindData:TFindData;
begin
FindData.ClassName := ClassName;
FindData.FindHandle := 0;
EnumChildWindows(hParent,@EnumCldProc,integer(@FindData));
result := FindData.FindHandle;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hParent:HWND;
begin
hParent := FindWindow('TMainForm', nil);
Label1.Caption := IntToStr(FindClassInChilds(hParent,'TTabControl'));
end;
0235誰か教えとくれぇ〜
NGNGVCLからActiveXを作成したのであれば、自動で変換できなかった部分もある
かもしれない、もう一度ActiveX変換後のソースを眺めてみれ。
と、人の蝿おってる場合じゃない、折れもActiveXに挑戦中(^^;
折れが作った非ビジュアルActiveXだが、貼り付けた時にアイコンが表示さ
れないのだが、何処にアイコンを設定すりゃいいのさ、誰か知ってる?
0236171
NGNGほかの人はどうやっているのか気になったんです
ただDelphiでのクラスの作り方がよく解らなかったんで
クラス化するのは後にすることにしました。
今はタブ、ツリー、リスト、スプリッターの動的配列を確保して
インスタンスを生成してます
>>175
Borlandのページにタブとボタンを動的生成するページが有ったんで参考にしました。
取りあえず動作するようになり前に進みました。
今困ってるのは新規タブを作成した場合
一番左はしに出来てしまうのです。
右側に作りたい場合などはどうすればいいのか解る方がいたら
アドバイス欲しいです。
0237デフォルトの名無しさん
NGNG//メニューのフォント
var
lf: LOGFONT;
nm: NONCLIENTMETRICS;
begin
nm.cbSize := sizeof(NONCLIENTMETRICS);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nm, 0);
lf := nm.lfMenuFont;
//
lf.lfFaceName//フォント名
lf.lfHeight//フォント高さ
lf.lfWeight//700以上でBold
lf.lfItalic//1の場合はitalic
0238デフォルトの名無しさん
NGNG最後だけ0を返すの?
0239デフォルトの名無しさん
NGNGString でデータがある時は ByteType を使って if 文を簡略化してますが、
文字コードしか無い場合には、すべて if 文で総当りしてコンバートするくらいしか
方法を思いつきません。その手しか無いのでしょうか???
もっと賢いやり方があるような気はしているのですが・・・・・
0240239
NGNG1バイト文字と2バイト文字が混ざっていますが
2バイト文字の方は英数字記号ひらカナなどの
合計500文字程度なので、少々おバカで無駄の多いコードでも
何とかなりそうではあるのですが・・・
0241ムッチムチの名無しさん
NGNGIEを取り込んで、ボタンでIE上のフォームに記入するのはどのようにすればいいでしょうか?
パスワードとかIDとかを自動入力させるみたいな・・・
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG素直に既存のライブラリ(jconvert.pasとか)を使うわけにはいかないの?
0244 ◆iWks40y.
NGNGDelphi6.0PersonalとDelphi2.0を使っています。
ユーザーがキーボードを入力したのを、感知するにはどうしたらいいでしょうか?
フォーム上でなら感知することは出来ますが、フォームが非アクティブになると、
感知できません。TForm.OnMessageでも反応しないようです…。
どうかよろしくお願いします。
0245デフォルトの名無しさん
NGNGpちゃん?
0247デフォルトの名無しさん
NGNGそこで以下の関数を作ったのですが、3階層目あたりの
サブメニューになると、正確な値が取得できず困っています。
{ フォーム AForm からのメニュー AMenu の相対座標を得る }
function GetMenuRect(AForm:TForm;AMenu:TMenuItem):TRect;
function ShiftRect(ARect:TRect;dx,dy:integer):TRect;
begin
Result:=Rect( ARect.Left+dx, ARect.Top+dy, ARect.Right+dx, ARect.Bottom+dy );
end;
var
DRect: TRect;
IMenu: TMenuItem;
begin
{ その位置のスクリーンでの座標取得 }
GetMenuItemRect( AForm.Handle, AMenu.Parent.Handle, AMenu.MenuIndex, Result );
{ フォームからの相対座標に変換 }
Result:=ShiftRect( Result, -AForm.Left, -AForm.Top-24 );
IMenu:=AMenu.Parent;
while IMenu.Parent is TMenuItem do
begin
{ その位置のスクリーンでの座標取得 }
GetMenuItemRect( AForm.Handle, IMenu.Parent.Handle, IMenu.MenuIndex, DRect );
{ フォームからの相対座標に変換 }
DRect := ShiftRect( DRect, -AForm.Left, -AForm.Top-24 );
Result := ShiftRect( Result, DRect.Left, DRect.Top );
IMenu := IMenu.Parent;
end;
end;
0248デフォルトの名無しさん
NGNGそのクラスの先頭ポインタはどこにあるのですか?
Bレジスタかと思っていたのだけれどはっきりしない。
0249239
NGNGなんと!こんな素晴らしいものが!
これで十分。全然オッケィです。
この前検索した時は見つけられなくて・・・
情報サンクスでした!
0250デフォルトの名無しさん
NGNGおっしゃる通りでした、有難うございました。
但し、私も非ビジュアルActiveXだが、貼り付けた時にアイコンが表示さ
れないです、非ビジュアルなocxだからそんなものなのではないでしょうか?
0251
NGNGSendMessage(Form1.Handle,WM_KEYDOWN,VK_F3,0);
上手くいかないんですが・・・
0252デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています