TeraOmegaNetwork 2.1
<2020年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

jquery drag drop html5 ASP.NET json
SVGとVue.jsのお勉強 1
IEAuto 2018新機能の整理
IEAuto 2018 0.9.4_beta
IEAuto 2018 0.9.2_beta
IEAuto 2018 0.9.1_beta
Javascript querySelector
javascript querySelector
DELETE/INSERT 作成マクロ
IEAuto 2018 0.9.0_beta

プログラミング
・C#
・C/C++
・Objective-C
・Java
・Perl
・Visual Basic
・Visual Basic .NET
・色々な言語
・メモ
管理人の落書き
リンク
テンプレート作成支援言語
IEAuto
クラス設計
試験勉強
・応用情報技術者
・セキュリティスペシャリスト







  お勧め1「テンプレート作成支援言語(T言語)」ver 1.4.2    2012/04/15 更新
テンプレート作成支援言語について
Vectorでダウンロードする

お勧め2「ブラウザ自動操作ツール(IEAuto2013)」ver 1.0.2   2013/03/01 更新。
ブラウザ自動操作ツール(IEAuto 2009)について
Vectorでダウンロードする

お勧め3「ブラウザ自動操作ツール(IEAuto2018) 」ver 0.9.4   2018/09/07 更新。
ダウンロードする。  

旧Ver:ver 0.9.0_beta

お勧め4「データベース更新前更新後比較ツール(DBCMP) Oracle接続可」ver 1.4.0  2010/03/14 新規公開
ダウンロードする。

00251  jquery drag drop html5 ASP.NET json  登録日:2019/03/01 9:07:27  更新日:2019/03/01 9:07:27

jquery drag drop html5  ,  ASP.NET webform形式でjson返却

https://qiita.com/rbtnn/items/b2ec6c7dee792e66ac75
?fbclid=IwAR1Xt6dBQnykVOCBPH9FA2OnkIzwa5mKQJKb2CUkK5IEiQNYfzcYsBgeD_8

http://www.it-view.net/drag-and-drop-file-upload-jquery-178.html?fbclid=IwAR3nR_2B_sR84oGHIzIJSxyuBmWZdMamqUHIk0m26MwmZbm7QVjZb0fD_sg



00250  SVGとVue.jsのお勉強 1  登録日:2019/02/28 1:20:27  更新日:2019/02/28 1:37:59

SVGをvue.jsのデータを元に生成。
データは暗号ちっくな配列で管理(笑)

SVGとVue.jsのお勉強 1
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>SVGとVue.jsのお勉強1</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>

    <style>
        circle{
          fill: skyblue;
          transition: all 0.2s cubic-bezier(.10,.02,.02,.10);
          stroke: rgb(200, 50, 200);
          stroke-width: 1px;
        }
        .active{
          fill: blue;
          stroke-width: 5px;
        }
    </style>
</head>
<body>
    <div id="app">
    
          <svg viewbox="0 0 600 650" width="600" height="650"
                   v-bind:style="{ 'transform': 'rotate('+rotate+'deg) scale('+scale+')', 'background-color': 'white' }">
            <template v-for="(obj,i) in circles">
                <template v-for="(row,idx) in obj[3]">
                    <text v-bind:x="850 - (obj[0] * 10 * 40 +40) + row[2]" v-bind:y="idx * 25 +21" 
                             font-size="20" stroke="black" text-anchor="start"  stroke-width="0.5" >{{idx+obj[1]}}</text>
                    <text v-bind:x="850 - (obj[0] * 10 * 40)     + row[2]" v-bind:y="idx * 25 +21" 
                             font-size="20" stroke="black" text-anchor="start"  stroke-width="0.5" >{{row[0]}}</text>
                    <template v-for="no in row[1] - row[0] + 1">
                        <circle r=10 v-bind:cx="550 - (obj[0] * no * 15) - row[2]"  v-bind:cy="idx * 25 + 15" 
                                    v-on:click="circleClick(i, idx, no)" 
                                   v-bind:class="{'active': circles[i][3][idx][3][no]}"></circle>
                    </template>
                    <text v-bind:x="550 - (1 * 30) + 25 - row[2]" v-bind:y="idx * 25 +21" 
                            font-size="20" stroke="black" text-anchor="start"  stroke-width="0.5" >{{row[1]}}</text>
                </template>
            </template>
        </svg>
        
        <div>
            <h3>回転</h3>
            <p>{{ rotate }}</p>
            <input type="range" max="360" step="90" v-model="rotate">
            <h3>拡大・縮小</h3>
            <p>{{ scale }}</p>
            <input type="range" min="0.5" max="1.5" step="0.1" v-model="scale">
        </div>
    </div>
    
    <script>
        new Vue({
            el: "#app",
        
            data: function(){
                /*
                 obj[0]     obj[1]      obj[2]     obj[3]      row[0]     row[1]    row[2]   row[3]
                [エリアNo, 開始行番号, 終了行番号, 
                                  列番号達[開始番号, 終了番号, X座標調整値, 各種席達[状態]]…
                ]
                */
                var circles = [
                    [ 2, 10,34,  [
                                     [101, 111, 4*15, []]
                                    ,[101, 111, 4*15, []]
                                    ,[101, 111, 4*15, []]

                                    ,[101, 112, 3*15, []]
                                    ,[101, 112, 3*15, []]
                                    ,[101, 112, 3*15, []]
                                    ,[101, 112, 3*15, []]
                                    ,[101, 112, 3*15, []]
                                    ,[101, 112, 3*15, []]

                                    ,[101, 113, 2*15, []]
                                    ,[101, 113, 2*15, []]
                                    ,[101, 113, 2*15, []]
                                    ,[101, 113, 2*15, []]
                                    ,[101, 113, 2*15, []]
                                    ,[101, 113, 2*15, []]

                                    ,[101, 114, 1*15, []]
                                    ,[101, 114, 1*15, []]
                                    ,[101, 114, 1*15, []]
                                    ,[101, 114, 1*15, []]
                                    ,[101, 114, 1*15, []]
                                    ,[101, 114, 1*15, []]

                                    ,[101, 115, 0,      []]
                                    ,[101, 115, 0,      []]
                                    ,[101, 115, 0,      []]
                                    ,[101, 115, 0,      []]
                                 ] 
                    ]
                ];

                // row[3]の配列を初期化 円に紐づく必要なデータを管理
                for(var i = 0; i < circles.length; i++) {
                    var obj = circles[i];
                    for(var idx = 0; idx < obj[3].length; idx++) {
                        for(var idx2 = 0; idx2 <= obj[3][idx][1] - obj[3][idx][0] + 1; idx2++) {
                            (obj[3][idx][3]).push(false);
                        }
                    }
                }

                return {
                    circles : circles,
                    rotate: 0,
                    scale: 1
                }
            }
            , methods : {
                circleClick : function (i, idx, no) {
                    console.log("circleClick");
                    //this.circles[i][3][idx][3][no] = !this.circles[i][3][idx][3][no];
                    this.$set(this.circles[i][3][idx][3], no, !this.circles[i][3][idx][3][no]);
                }
            }
        })
    </script>
</body>
</html>


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
続きを見る


00249  IEAuto 2018新機能の整理  登録日:2018/09/08 11:58:50  更新日:2018/09/08 11:58:50

IEAuto 2018新機能
1.フレーム対応の強化
 タイプinitを追加することにより、画面遷移時に、途中からフレームに切り替わる画面にも対応。
2.BUTTONタグへの対応
3.確認ダイアログ、アラートダイアログのIE11対応
4.linkタイプの定義の仕様変更
 ・4つめのリンクをクリックする場合は、値に、3,clickを指定。※インデックスベースなので位置が毎回変わる場合はURLを手入力で定義する。
 ・hrefはjavascript:void(0)のリンクタグ定義のサポート
5.ConfirmタイプはデフォルトでOKを定義。(いいえはNOを定義する)
6.sleepタイプはデフォルトで1000を定義。(停止時間はミリ秒で指定)
7.ボタン一覧ダイアログでボタン名を選択するとブラウザのボタンに水色の枠を描画するように修正。
8.FORMタグに属さないボタンは、ボタンタグ、インプットタグのインデックスでアクセスするように対応
9.タイプにJavaScriptが定義できるようになりました。(jQueryを無理やり埋め込むことも可能。ヘルプ.txt参照)
10.オフィス64bit対応。
11.ファイルをフォルダで管理できるように修正。
12.IE7以前(IE7エミュレート含む)は、サポート対象外。(エラーで停止しないようには心がけてますが・・・)
13.付録にChromeAutoを添付。(SeleniumBasicを使用しているので、外部ライブラリなどセットアップ必要)



00248  IEAuto 2018 0.9.4_beta  登録日:2018/09/07 0:32:30  更新日:2018/09/07 0:32:48

IE7 エミュレートのサイトだと異常終了してしまうのを修正 ※制限つき 

制限事項
※changeイベントのエミュレートはIE7用サイトでは機能しない。
※JqueryUIのdiv.ui-widget-overlayのwait判断は機能しない。



00247  IEAuto 2018 0.9.2_beta   登録日:2018/08/10 22:02:30  更新日:2018/08/10 22:02:30

自動操作中のプリントスクリーンに不具合があるのを修正。



00246  IEAuto 2018 0.9.1_beta   登録日:2018/08/10 1:46:11  更新日:2018/08/10 1:46:11

◆ver0.9.1
jQuery UIで div.ui-widget-overlay が定義されたとき待つように修正。
一部のフレームワークでajaxの実行タイミングに上記定義がされていた場合、待機するようになります。



00245  Javascript querySelector   登録日:2018/08/08 0:28:54  更新日:2018/08/08 1:14:03

( ..)φメモメモ
javascript:alert(document.querySelector("body > div.ui-widget-overlay") != null)




非同期中(ajax処理中)のみjQuery UIのui-widget-overlayを使用して画面を操作できないようにしているフレームワークの場合のブラウザ自動操作時の待機手段。クライアントのJSの処理後にui-widget-overlayが解除されるなら問題なくうごきそう。
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
// 呪文
javascript: var ivl = setInterval(function() {if(document.querySelector(
"body > div.ui-widget-overlay") != null){ console.log("wait"); } else { clearInterval(ivl); }}, 1000)

// 呪文改行
javascript: 
    var ivl = setInterval(
        function() {
            if(document.querySelector("body > div.ui-widget-overlay") != null){
                console.log("wait");
            } else { 
                clearInterval(ivl); }
            }, 1000
    )




参考URL
http://codaholic.org/?p=1485
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
続きを見る


00244  javascript querySelector  登録日:2018/08/07 8:03:04  更新日:2018/08/07 8:22:10

IEAutoでタイプにscriptを選択し値にquerySelectorか関数を記述すればセレクターでアクセスできる。

孫関係
document.querySelector(&#39;#login-form input[type="text"]&#39;).value = "aafffffa";
document.querySelector(&#39;#login-form input[type="password"]&#39;).value = "aaa";

親子関係
document.querySelector('#login-form > form >  input[type="text"]:nth-child(5)').value = "affa";
document.querySelector('#login-form > form >  input[type="password"]').value = "ddd";


IDは#
クラス名は.
タグは何もつけない
属性は[type="password"]こんな感じ



00243  DELETE/INSERT 作成マクロ  登録日:2018/08/06 8:05:22  更新日:2018/08/06 8:05:22

昔の資産を発掘したのでアップ。
使い方はマクロ読んで。
たぶん動く…


DELETE/INSERT 作成マクロ
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Attribute VB_Name = "MakeSql"
Option Explicit

Private Type TableInfo
    ColNm As String
    IsKey As Boolean
End Type


'SQLの生成を行います。
Public Sub SubMakeSql()

    If MsgBox("実行しますか?", vbYesNo, "確認メッセージ") = vbNo Then Exit Sub
    
    'シートチェック
On Error GoTo Exception
    Dim sheetNm As String
    sheetNm = "Sheet1"
    Worksheets(sheetNm).Activate
    sheetNm = "Sheet2"
    Worksheets(sheetNm).Activate
    GoTo Finally
Exception:
    Call Throw(1001, "SubMakeSql", "シート名:" & sheetNm & "が存在しないため実行できません。")
Finally:
    
    Dim row As Long
    Dim col As Long
    
    Dim tblNm As String
    Dim arrCol(256) As TableInfo
    Dim colCnt As Long
    
    Dim outRow As Long
    outRow = 1
    
    Worksheets("Sheet2").Activate
    Cells.Select
    Selection.WrapText = False
    Selection.ClearContents
    Worksheets("Sheet1").Activate
    
    For row = 1 To 20000
    
        If Cells(row, 1).Value = "テーブル名" Then
            tblNm = Split(Cells(row, 2).Value, "(")(0)
            
            For col = 2 To 256
                arrCol(col).ColNm = Cells(row + 3, col).Value
                arrCol(col).IsKey = (Cells(row + 3, col).Font.Underline = xlUnderlineStyleSingle)
                If Cells(row + 3, col).Value = "" Then
                    colCnt = col - 1
                    Exit For
                End If
            Next
        End If
        
        If Cells(row, 1).Value = "INS" Then
            Dim sqlInsCol As String
            Dim sqlInsVal As String
            Dim sqlDel As String
            sqlInsCol = "INSERT INTO " & tblNm & "("
            
            For col = 2 To colCnt
                If col > 2 Then
                    sqlInsCol = sqlInsCol & ", "
                End If
                
                sqlInsCol = sqlInsCol & arrCol(col).ColNm
            Next
            
            sqlInsCol = sqlInsCol & ")"
            sqlInsVal = "VALUES ("
            sqlDel = ""
            Dim isFirstAnd As Boolean
            isFirstAnd = True
            For col = 2 To colCnt
                If col > 2 Then
                    sqlInsVal = sqlInsVal & ", "
                End If
                
                sqlInsVal = sqlInsVal & "'" & Cells(row, col).Value & "'"

                If arrCol(col).IsKey Then
                    If isFirstAnd Then
                        isFirstAnd = False
                        sqlDel = "DELETE FROM " & tblNm & " WHERE "
                    Else
                        sqlDel = sqlDel & " AND "
                    End If
                    
                    If Cells(row, col).Value = "" Then
                        sqlDel = sqlDel & arrCol(col).ColNm & " IS NULL"
                    Else
                        sqlDel = sqlDel & arrCol(col).ColNm & " = " & "'" & Cells(row, col).Value & "'"
                    End If
                End If
            Next
            
            sqlInsVal = sqlInsVal & ");"
            
            If sqlDel <> "" Then
                sqlDel = sqlDel & ";"
            End If
            
            Worksheets("Sheet2").Activate
            Cells(outRow, 1).Value = sqlDel
            outRow = outRow + 1
            Cells(outRow, 1).Value = sqlInsCol
            outRow = outRow + 1
            Cells(outRow, 1).Value = sqlInsVal
            outRow = outRow + 2
            Worksheets("Sheet1").Activate
        End If
    Next
    Worksheets("Sheet2").Activate
    Range("A1").Select
    
End Sub








メニュー(アドイン)
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
Attribute VB_Name = "SubMenu"
Option Explicit

'
'参考URL:http://www.aa.alpha-net.ne.jp/pcfriend/Excel/MenuBar.htm
'

Dim mySubMenu As CommandBarControl 'マイサブメニュー

'マイサブメニューの作成
Sub MakeSubMenu()
'メニューバーにコマンドボタンを作成する
Dim myMenu As CommandBar
Dim cmdSubMenu As CommandBarControl
    'すでにサブメニューがあれば削除する
    DelSubMenu

    'メニューバーに「ゆーてぃりてぃー」サブメニューを配置する
    Set myMenu = Application.CommandBars("worksheet Menu Bar")
    Set mySubMenu = myMenu.Controls.Add(Type:=msoControlPopup)
    mySubMenu.Caption = "ゆーてぃりてぃー"

    '「ゆーてぃりてぃー」サブメニューに「SQL生成」を作成
    Set cmdSubMenu = mySubMenu.Controls.Add(Type:=msoControlButton)
    cmdSubMenu.Caption = "SQL生成"
    'サブメニューでコマンド1を選択したとき cmd1() を呼び出す
    cmdSubMenu.OnAction = "BtnMakeSql"

End Sub

'マイサブメニューを削除する
Sub DelSubMenu()
'メニューバーのサブメニューを削除する
    On Error Resume Next
    mySubMenu.Delete
End Sub

'「メニュー > ゆーてぃりてぃー > SQL生成」イベント
Private Sub BtnMakeSql()
    Call SetOffscreenStart
On Error GoTo Catch
    Call SubMakeSql
    GoTo Finally
    
Catch:
    MsgBox Err.Description, vbCritical, "エラーメッセージ"
    GoTo Finally
    
Finally:
    Call SetOffscreenStop
End Sub





ゆーてぃるモジュール
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
Attribute VB_Name = "Util"
'再計算および再描画を無効にする
Public Sub SetOffscreenStart()
    Application.Cursor = xlWait
    Application.StatusBar = "処理中..."
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
End Sub


'再計算および再描画の無効を止める
Public Sub SetOffscreenStop()
    Application.Cursor = xlDefault
    Application.StatusBar = ""
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub

'Errが存在する場合Trueを返却します。
Function IsException() As Boolean
    IsException = Err.Number <> 0
End Function

'現在保持されているErrを投げます。
Sub DefaultThrow()
    Err.Raise Err.Number, Err.Source, Err.Description
End Sub

'パラメータを元にErrを投げます。
Sub Throw(ByVal errNumber As Integer, ByVal errSource As String, ByVal errDescription As String)
    Err.Raise errNumber, errSource, errDescription
End Sub

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
続きを見る


00242  IEAuto 2018 0.9.0_beta   登録日:2018/08/05 23:27:19  更新日:2018/08/05 23:27:19

formitemフォルダ配下で自由にフォルダを作成できるように修正。

画面(シート)に対し以下仕様変更を行いました。
・項目取得シートには、パスをセットするドロップダウンを新たに設けました。
・自動操作シートには、パスをセットできるようにパス列をもうけました。
 ※元々、タイトル列だった列が、パス列とファイル列に置き換わりました。

従来通り使用する場合は、パスに何も値を入れずに使用すれば従来通り動きます。