[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/01/29(Mon) 12:00
投稿者名:POINT
Eメール:
URL :
タイトル:
フレックスグリッドの扱い方
textboxに入力された文字がボタンをクリックすると、sortで一覧を並べて
表示するプログラムを作っています。

今回一覧の縦一列全体の中にtextboxに入力されたものと同じものがあった
場合、該当する一覧の下に追加したいのですがどのようにすればいいでしょうか?

↑説明がうまく出来ないのでこんな感じです↓
textbox = 11

一覧
1
5
11 ←11の下に追加
18

お願いいたします。

投稿時間:2007/01/29(Mon) 14:49
投稿者名:ぶぶ
Eメール:
URL :
タイトル:
Re: フレックスグリッドの扱い方
VBのバージョンは何でしょうか?
カテゴリ別サンプル一覧MsFlexGrid関係は見ましたか?

投稿時間:2007/01/29(Mon) 15:33
投稿者名:POINT
Eメール:
URL :
タイトル:
Re^2: フレックスグリッドの扱い方
申し訳ありません。
VB6.0です。

一応フレックスグリッドのページは一通り読んだつもりなのですが・・。

投稿時間:2007/01/29(Mon) 16:00
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: フレックスグリッドの扱い方
> 一応フレックスグリッドのページは一通り読んだつもりなのですが・・。
フレックスグリッド と言っても色々ありますので、正確なコントロール名を
書くようにして下さい。
MSFlexGrid なら、行の挿入と削除(No.5) があったはずですが? それとも
どこまで、できて どの部分が解らないかを書かないと。
(比較の仕方が解らないのか? 行の挿入の仕方が解らないのか? その他の部分なのか)
いずれにしても MSFlexGrid 関係は、大抵の事が掲載してありますので、よく見て
ご自分で実際に試して確認して下さい。

投稿時間:2007/01/29(Mon) 17:16
投稿者名:POINT
Eメール:
URL :
タイトル:
Re^4: フレックスグリッドの扱い方
何度も申し訳ないです。
さっきの部分は知りたいこととやりたいことがめちゃくちゃな状態で聞いてしまってすみません。

私はMSFlexGridを使用しておりまして、sortの部分でよくわからなくなってしまいました。

例)
26
22
1
空白
空白
29
空白
30
↓sortをかけた後に
1
空白
空白
22
26
29
空白
30

今回実現したいことは空白部分を上にある数字と一緒に並び替えをしたいです。
なんというか数字と空白がセットだ!!と宣言したりする方法が見つからなくて困っていました。
教えていただければありがたいです。

投稿時間:2007/01/29(Mon) 17:35
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: フレックスグリッドの扱い方
そのような事は、Sort ではできませんので、空白のセルを調べ、そのセルに
1.01   1.02   29.01  のような仮データを入れ Sort をかけた後、又空白に戻す
しかないのでは。

投稿時間:2007/01/30(Tue) 09:02
投稿者名:ぶぶ
Eメール:
URL :
タイトル:
Re^6: フレックスグリッドの扱い方
> そのような事は、Sort ではできませんので、空白のセルを調べ、そのセルに
> 1.01   1.02   29.01  のような仮データを入れ Sort をかけた後、又空白に戻す
> しかないのでは。
私だったら、可視しないSort用の列をつくって、花ちゃんのような仮データを
入れてSortさせます。

投稿時間:2007/01/30(Tue) 09:38
投稿者名:POINT
Eメール:
URL :
タイトル:
Re^7: フレックスグリッドの扱い方
はじめてフレックスグリッドを利用したもので、言われている内容が
今の知識だと検討がちょっとわからなかったのでお聞きします。

>可視しないSort用の列
というのは見えないように列を作ることが可能なのでしょうか?

自分でできるのかな??と思ったのが、列の文字が存在する位置までループして、
その間を取得して・・漠然としすぎてダメそうですorz   

実現しようとしてることが想定外っぽくてゴメンナサイ。

投稿時間:2007/01/30(Tue) 10:09
投稿者名:かさのば
Eメール:
URL :
タイトル:
Re^8: フレックスグリッドの扱い方
>可視しないSort用の列
=幅が0の列です。
列幅の設定はヘルプをご参照ください。

処理の流れとしては
@ソート用の列を作る
A@にソートしたい列の値を入れていく
B空白行まできたら直前に入れた値 + 0.01 を入れる
Cソートする

みたいな感じでしょうか。

投稿時間:2007/01/30(Tue) 15:37
投稿者名:POINT
Eメール:
URL :
タイトル:
Re^9: フレックスグリッドの扱い方
せっかく皆様にご教授願ったのに、ダンボさんが書いて下さったように
並び替えをしたくてずうっとやっていたのですが、結局うまく行かなくてゴメンナサイ

勉強が足りていないっすね・・・

投稿時間:2007/01/30(Tue) 17:41
投稿者名:ボビー
Eメール:
URL :
タイトル:
Re^10:フレックスグリッド
私もその条件でやってみたんですがうまくいきませんでした。
うまく設定できれば教えてあげたかったんですが・・・無念

ある列に文字が存在していた場合、整数を1つづつ代入して
ある列が空白の場合、上の数字+0.01ってことで私は理解したんですが・・・
↓のようにしたいんですよね??

1
1.01 空白
1.02 空白
1.03 空白
2
3
3.01 空白
3.02 空白
4
5

投稿時間:2007/01/31(Wed) 11:16
投稿者名:ぶぶ
Eメール:
URL :
タイトル:
Re^10: フレックスグリッド
> せっかく皆様にご教授願ったのに、ダンボさんが書いて下さったように
> 並び替えをしたくてずうっとやっていたのですが、結局うまく行かなくてゴメンナサイ
>
> 勉強が足りていないっすね・・・
どこまでできていますか?
何でうまくいってないですか?
できたら、コード載せてみてください。
かさのばさんのレス 01/30-12:28 No.8300 は見てみましたか?

投稿時間:2007/01/30(Tue) 11:49
投稿者名:ぶぶ
Eメール:
URL :
タイトル:
Re^8: フレックスグリッド
> はじめてフレックスグリッドを利用したもので、言われている内容が
> 今の知識だと検討がちょっとわからなかったのでお聞きします。
>
> 自分でできるのかな??と思ったのが、列の文字が存在する位置までループして、
> その間を取得して・・漠然としすぎてダメそうですorz   
>
> 実現しようとしてることが想定外っぽくてゴメンナサイ。

かさのばさんが補足してくださってますので参照してください。
列幅を0にすれば、見た目表示されませんので、その表示しない列にソートキーを入れて
ソートさせれば、見た目POINTさんが望むソートはできると思います。
実際、どんな感じでコーディングされてますか?ヘルプは見ていますか?

投稿時間:2007/01/30(Tue) 11:58
投稿者名:POINT
Eメール:
URL :
タイトル:
Re^9: フレックスグリッド
ええと皆さんありがとうございます。
おかげさまで幅の設定で隠すことはうまく行きました。
現在こんな感じでしています↓
チョット考え中だったため返信が遅れてしまいました。
 
文字が入力されている場合は1づつ加算、されていない場合は
0.01づつ加算って設定が難しくて考えておりました。
う〜む・・


    Dim x As Integer
    Dim y As Integer
    Dim z As Integer
    
    With grd_一覧
    For x = .FixedRows To .Rows - 1
    
    If Len(.TextMatrix(x, 0)) > 0 Then
        .TextMatrix(x, 2) = x
    Else
        .TextMatrix(x, 2) = x + 0.01
    End If
    Next
    
    End With

投稿時間:2007/01/30(Tue) 12:28
投稿者名:かさのば
Eメール:
URL :
タイトル:
Re^10: フレックスグリッド
> ええと皆さんありがとうございます。
> おかげさまで幅の設定で隠すことはうまく行きました。
> 現在こんな感じでしています↓
> チョット考え中だったため返信が遅れてしまいました。
>  
> 文字が入力されている場合は1づつ加算、されていない場合は
> 0.01づつ加算って設定が難しくて考えておりました。
> う〜む・・
>
>
>     Dim x As Integer
>     Dim y As Integer
>     Dim z As Integer
>    
>     With grd_一覧
>     For x = .FixedRows To .Rows - 1
>    
>     If Len(.TextMatrix(x, 0)) > 0 Then
>         .TextMatrix(x, 2) = x
>     Else
>         .TextMatrix(x, 2) = x + 0.01
>     End If
>     Next
>    
>     End With

xって行カウントですよね?
行カウントをソート用列の値に入れてもダメですよ

投稿時間:2007/01/30(Tue) 13:34
投稿者名:ぶぶ
Eメール:
URL :
タイトル:
Re^10: フレックスグリッド
> ええと皆さんありがとうございます。
> おかげさまで幅の設定で隠すことはうまく行きました。
> 現在こんな感じでしています↓
> チョット考え中だったため返信が遅れてしまいました。
>  
> 文字が入力されている場合は1づつ加算、されていない場合は
> 0.01づつ加算って設定が難しくて考えておりました。
> う〜む・・
>
>
>     Dim x As Integer
>     Dim y As Integer
>     Dim z As Integer
>    
>     With grd_一覧
>     For x = .FixedRows To .Rows - 1
>    
>     If Len(.TextMatrix(x, 0)) > 0 Then
>         .TextMatrix(x, 2) = x
>     Else
>         .TextMatrix(x, 2) = x + 0.01
>     End If
>     Next
>    
>     End With
中に設定する内容はPOINTさんが思っている値になってますか?
デバッグで確かめてみてください。
ステップ実行して、確認してくださいね。

投稿時間:2007/01/30(Tue) 09:48
投稿者名:ダンボ
Eメール:
URL :
タイトル:
Re^6: フレックスグリッドの扱い方
> そのような事は、Sort ではできませんので、空白のセルを調べ、そのセルに

私がよくやる手法は「(Sort)のために非表示桁を設ける」です。
ユーザには見せたくないが内部処理の都合上、データを入れておきたいセルを設けてセル幅を0にしておく。

今回の場合は、Sortキーを非表示にしておけば良いのでは。

Sortキー(非表示) 見せるデータ1 見せるデータ2 見せるデータ3
1.00        A1       A2      A3
2.00        B1       B2      B3
2.01        空白      B21      B31  
3.00        C1       C2      C3