C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■43929  Re[8]: TextBoxを一括でReadOnlyに
□投稿者/ たくボン -(2009/11/21(Sat) 21:59:05)
    2009/11/21(Sat) 22:01:06 編集(投稿者)

    脱字あったので修正。

    No43918 (みきぬ さん) に返信
    > 自分が理解できないと煽りしかできないって、かわいそうですね。
    > 画面を分けて、個々の画面をシンプルに作っておくことの意義がわからないとは。

    個々の画面をダラダラ書いて作り捨てにするって事かな?作業の合間に書いたから遅くなってしまった。


    複雑な大規模なプロジェクトになる程、コードの住み分けを明確にして集中して管理するのが鉄則だと思うけど?MVCにしてもPatterns & Practicesにしても根本はそこだと思う。

    俺はよく例に出すんだけど、「フグ田家にドラえもんがいたり、野比家にカツオがいたら混乱の元」って事。
    シンプルに作れないのは、物事を素直に抽象化できていないからだと思うけど。

    俺がMSDN買ってすぐにしたことはカスタムコントロールの作成と、アプリケーションの共通する処理のコンポーネント化だったけど未だにその手法は使ってますよ。
    (おかげで.NETの継承やADOのバグは結構見つけて教えたけど、結局全部.NETのバグだったからインシデントの消費は0だったな)
    画面が綺麗になろうが下位のコンポーネントやレイヤーが変わろうと、業務システムの画面制御なんかそう変わるもんじゃないから。
    と言うよりむしろ変わってはダメ。優れたUI程、運用指導とかのコストは低くなるしバグも出にくい。(ここは重要)


    > インジェクションのことは知りませんが、つまりあなたの後にそのシステムを扱う人は、それを知っていないとまずいことは分かりました。
    > 私なら見てすぐわかるように、標準コントロールでできることは標準コントロールを使ってやりますけどね。
    > 引き継ぎのときに余計な重荷は背負いたくないし。

    まずいってのがどれくらいのレベルを言ってるのかわからんけど。

    コントロール(コンポーネント)の設計者は知ってないとまずいけど、普通のプログラマがそれを全て理解する必要はないでしょ。
    みきぬさんは標準コントロールの動作全てを知ってるから使ってるの?
    コードの設計はあるべき所にあるべきコードがあれば迷う必要はないと思うんだけど?プロジェクトで徹底できてない?それとも技術者のスキルが低い?
    規模にもよるけど、1つのFormに全てのコードを入れて行くと開発工数の増加やバグの温床になると思うんだけど。

    システム固有の可変になる部分のみをプログラマに作成させて、制御やUI、エンティティの設計はこっちで用意する。
    エンドユーザにしても一般の開発者にしても、自由を与えてるようで与えないってのが設計者の思考だと俺は思う。
    (こう書くと御幣が生まれるかもしれんから補足しとくけど、全く開発者を信用してない訳ではないから。こっちのチェックが楽になるからそうしてるだけ)


    > なんかあなたはどんどん前提を変えているようですが、質問の状況をどう考えているのですか?
    > ここでの回答をもとに、一括で TextBox を Readonly にするような対応をしたら、後で困りますよ?
    > そこは共通認識でいいですよね。「標準のコントロール使えばそうなるんだろうけどね」と仰っているのだから。

    共通認識でOK?もちろん:-)

    さて、話を本題に戻してあたかも自分の主張が正しいように誘導してるみたいだけど、スレ主の質問(タイトルも)は、『TextBoxを一括でReadOnlyに』だよね?
    個別にReadOnlyするしないの制御はまた別問題。Panelに入れて制御するなり個別にIf書くなり自由にすれば良いだけ。
    他にも「後で困る」理由があれば書いてみて。
    前提を変えてるんじゃなくて、小出しにしてるだけなんだけどなぁ。
    ここは学校じゃないんだし、今回の質問はシステムの作りに関することだからヒント出しただけで十分だと思うけど。
    こっから先は考えれる人だけわかればいいんじゃないかな。


    > さしあたって、ほかのコントロールはどうするんです?
    > ComboBox とか、DateTimePicker とか…。これらには Readonly がなく、Enable=false にしたらがっかりな見た目になりますよ?
    > 参照画面を分けておけば、そこは ReadOnly の TextBox に交換するなど、容易に対応できます。

    作れない(もしくは考えてもわからない)ならサードパーティ製のコントロールでも買えばいいんじゃない?そのためのサードパーティ製品だと思うし。
    俺も案件によってはサードパーティ製のコントロールを指定されることもあるけど、機能満載で使いにくいから嫌い(金出して買ってもバグあるし)

    ReadOnlyのTextBoxに交換するのが容易って案があるけど、配置だけ考えても
    ・その配置やプロパティの設定やチェックは誰がするの?
    ・何をもってOKとするの?
    ・仕様変更入ったら全コントロールの配置をまた再チェック?
    ・データの表示形式とか変更になったら同じ作業をするの?

    これはバグの少ない素晴らしいシステムの香りがするのは俺だけ?

    古臭いかもしれないけど、システム構築なんかはエンドユーザ業務の「ムリ、無駄、ムラ」の問題点を軽減させることだと思ってるので、これを自分やチームに置き換えて考えてみればおのずと答えが出ると思うけど?
    ・チームに高いスキルを持つ人が多くいますか?
    ・スキルの違う人がプログラムしても、同じような品質を提供できますか?
    ・スキルのない人がチームに参加して、実際納品できうるレベルの品質のコードに到達するまでの期間は短いですか?
    ・チーム全員がシステムの基本動作が理解できてますか?

    ありきたりの話だけど、システムの品質はチームの一番スキルの低い人の品質になるって言われてるけど、実際そうだと思う。
    じゃ、どうすれば品質を維持できるの?


    > で、カスタムコントロールの場合はどうやって実装するんですか?

    そこは自分で考えようよ。開発者は考えてナンボなんだし。


    > また、画面には [登録]などのボタンがあると思いますが、そこは当然隠すなどの対応がいりますね。
    > [戻る] ボタンがあれば、押したときの遷移先も変えてあげないといけませんね。
    > 登録画面の場合、入力中に戻ろうとしたときは破棄確認を出してあげますが、参照画面には不要なものですね。
    > そういった2画面ぶんのロジックを1つの画面に持つことで、管理が複雑になることが容易に想像できます。
    > あなたが提案するインジェクションを使えば、この管理が容易になるのですか?

    答えを先に言うと当然簡単にできる。
    実際、登録・参照みたいな画面を制御したりするけど、そんなに難しい処理?そして個々の画面に記述すべき処理?
    ってか、業務システムの大半はこれの繰り返しだと思うけど、このことについて考えたことあるのかな?
    (既に、1つの画面に処理を持つって書いてる時点で、考えたことはないと思うんだけど敢えて聞いてみようか。)

    戻るボタンを使うN:Nの画面遷移のような場合は少し難しくなるけど、ループとインスタンスの動的生成すれば画面制御部は呼び出し元の画面の型を設定しておくだけでできる。(参照を持ってもいいんだけど、それは無駄だし)
    設定は呼び出し側の1行でOK。その中核の部分(と言ってもコメント除いて15行くらいで実現できる。
    このしくみを開発者が理解できなくても問題はない(と言っても今年入社した新人ですら理解できてるから、俺がいなくても全然平気)

    業務システムを構築してる人なら、この辺の作りはまず考えておくべきことじゃないの?


    > おそらく、たくボン氏がやればそうなのでしょう。あなたはどうやら、とてもすばらしい管理方法を持っているようだ。
    > だったら、是非それを質問者に教えてあげてください。それはとても有意義なことだと思います。
    > ていうかそれをしないと、回答として無責任だと思います。

    で、俺に何のメリットがあるの?
    って書いてしまえばそれまでだけど、結構ヒントは出したつもり(もちろん、みきぬさんの質問に対しても)

    ここって勉強会なんだから、こういう討論をもっとしてもいいんじゃないの?

    http://d.hatena.ne.jp/busaikuro/20070821
    (ごめん、どんな人かわからんから「みきぬ」でぐぐったら一番にヒットしたw)

    こんな感じで裏で人を中傷したりしてるより、よっぽど有意義だと思うけど?

    こういう事が好きな人みたいだから、先に情報あげるけど「たくボン」で検索しても意味ないですよ:-P
    (10年くらい前に別の質問板で使ってたから懐かしくて使ってるだけなので)

    さて、ここまで書いたんだからみきぬさんが冒頭で言ってる「意義」ってのを教えてください。
    ちなみにウチの新人は昨日「別画面とかありえない」って即答したんで、もしかしたら俺の教育が悪いかもしれないので今後の参考に是非:-)
記事No.43854 のレス /過去ログ75より / 関連記事表示
削除チェック/

■54569  Re[4]: Fontサイズの取得方法
□投稿者/ 佐藤 -(2010/10/26(Tue) 18:04:57)
    No54557 (魔界の仮面弁士 さん) に返信
    > ■No54552 (佐藤 さん) に返信
    >>TextRenderer.MeasureText を使用しようと思いますがサイズの判定基準としましては、
    >>計測した縦及び幅が基準値ないならOK、基準値外なら再度繰り返しとすればいいのでしょうか?
    >
    > 考え方としてはそれで良いと思います。なお、GDI 系の描画と GDI+ 系の描画では、
    > 多少の違いがありますので、測定方法も異なってくることに注意してください。
    >
    > また、領域いっぱいに描画されるフォントサイズを知りたい場合は、フォントサイズを
    > 少しずつ変えながら、どのサイズまでならば収まり、どこから超えてしまうかを
    > 判断する事になるでしょう。
    > フォントサイズを、1pt ずつ変更するのか、0.1pt ずつ変更するのかは実装次第ですが。
    >
    >
    枠内に収まるようフォントサイズを1ptずつ変更し、対応できました。
    ありがとうございました。
記事No.54540 のレス / END /過去ログ91より / 関連記事表示
削除チェック/

■54568  Re[1]: LINQクエリで分岐
□投稿者/ shu -(2010/10/26(Tue) 17:55:07)
    2010/10/26(Tue) 17:56:43 編集(投稿者)

    No54564 (nao さん) に返信

    and条件なら

    query = from a in query where <条件>

    とすれば
     m.makerName == "花子" と <条件>を
    満たすSQLが発行されます。

    Select部分は同様にして最後に記述すれば良いかと思います。
     
記事No.54564 のレス /過去ログ91より / 関連記事表示
削除チェック/

■88083  Re[5]: C#でのwaveファイルの波形表示
□投稿者/ 魔界の仮面弁士 -(2018/08/01(Wed) 17:38:19)
    No88055 (akaveco さん) に返信
    > バイナリエディタで見てみたところ以下のようになっていました。
    > 
    > 52 49 46 46 86 5E 00 00 57 41 56 45 66 6D 74 20 
    > 10 00 00 00 01 00 01 00 44 AC 00 00 CC 04 02 00 
    > 03 00 18 00 64 61 74 61 62 5E 00 00 5E 72 01 20
    
    上記 3 行のデータ末尾の 4 バイトに「5E,72,01,**」となので、
    最初の音は 0x1725E すなわち「+94,814」かと思いますが、正しいでしょうか?
    
    
     [00000-00003] RIFF.ID       : 52,49,46,46 "RIFF"
     [00004-00007] RIFF.Size     : 00005E86 (24,198 Bytes)
     [00008-0000B] RIFF.FileType : 57,41,56,45 ("WAVE")
    
     [0000C-0000F] Chunk.ID      : 66,6D,74,20 ("fmt ")
     [00010-00013] Chunk.Size    : 00000010 (16 Bytes)
     [00014-00015] フォーマットID: 0001 (WAVE_FORMAT_PCM)
     [00016-00017] チャンネル数  : 0001 (モノラル)
     [00018-0001B] 標本化周波数  : 0000AC44 (44100 Hz = 44.1 kHz)
     [0001C-0001F] 秒間バイト数  : 000204CC (132,300)
     [00020-00021] ブロックサイズ: 0003 (3 Bytes = 24bit)
     [00022-00023] 量子化ビット数: 0018 (24bit)
    
     [00024-00027] Chunk.ID      : 64,61,74,61 ("data")
     [00028-0002B] Chunk.Size    : 00005E62 (24,162 Bytes)
     [0002C-05E89] 波形データ    : 5E,72,01,20 ……
    
    
    
    > 提案いただいたやり方でやってみても、どうもうまくいきません。
    あー。24bit の負数処理忘れて、符号なしになってますね
    
    // data4[3] = 0;
    data4[3] = (byte)((data[n + 2] > 0xF) ? 0xff : 0x00);
    
    に訂正しておいてください。
    
    
    
    符号付き 24bit 整数型の場合:
     0x000000 =  0
     0x000001 = +1
     0x000002 = +2
       :
     0x7FFFFD = +8,388,605
     0x7FFFFE = +8,388,606
     0x7FFFFF = +8,388,607
     0x800000 = -8,388,608
     0x800001 = -8,388,607
     0x800002 = -8,388,606
       :
     0xFFFFFD = -3
     0xFFFFFE = -2
     0xFFFFFF = -1
    
    
    符号なし 24bit 整数型の場合:
     0x000000 =  0
     0x000001 = +1
     0x000002 = +2
       :
     0x7FFFFD = +8,388,605
     0x7FFFFE = +8,388,606
     0x7FFFFF = +8,388,607
     0x800000 = +8,388,608
     0x800001 = +8,388,609
     0x800002 = +8,388,610
       :
     0xFFFFFD = +16,777,213
     0xFFFFFE = +16,777,214
     0xFFFFFF = +16,777,215
記事No.88011 のレス /過去ログ151より / 関連記事表示
削除チェック/

■88093  Re[6]: C#でのwaveファイルの波形表示
□投稿者/ akaveco -(2018/08/02(Thu) 12:00:03)
    No88083 (魔界の仮面弁士 さん) に返信

    たびたびお付き合いいただきありがとうございます。

    > 上記 3 行のデータ末尾の 4 バイトに「5E,72,01,**」となので、
    > 最初の音は 0x1725E すなわち「+94,814」かと思いますが、正しいでしょうか?

    そうです。1725Eでした。


    > あー。24bit の負数処理忘れて、符号なしになってますね

    符号あり、なしがあるんですね。知りませんでした。


    > // data4[3] = 0;
    > data4[3] = (byte)((data[n + 2] > 0xF) ? 0xff : 0x00);

    この部分は、符号ありに変換しているということでしょうか?


    この部分を変更してやってみたのですが、だいぶ元の波形に近づいたように見えるのですが、なんだか最初のほうの値が負のほうに片寄っていて、おかしなことに…
    何がいけないのかわかりますでしょうか?

    以下のリンクに画像をアップしました。
    https://drive.google.com/file/d/16DXZALxyiD66_AcKWFflTId9U47pzJtK/view?usp=sharing
    1番目が波形描画を行ったもので、
    2番目がそれを最大値を大きく設定して、遠目に見たものです。
    3番目が元の音声を別のプレイヤーで再生したときの波形です。
記事No.88011 のレス /過去ログ151より / 関連記事表示
削除チェック/

■96274  Re[12]: トラックバーの一部に色を付ける方法
□投稿者/ KOZ -(2020/11/09(Mon) 09:13:50)
記事No.96227 のレス /過去ログ167より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -