0

私は Visual Basic を初めて使用します (クライアントのプロジェクトの一部を構築するために学習しています)。以下は、Sterling ActiveX API ライブラリを使用しているサンプル コードです。基本的に、このプログラムは Sterling Trader と呼ばれる株式取引ソフトウェアと一緒に実行され、ボタンが押されると、テキスト ボックスが指定された株式 (この場合は IBM) の現在の株価で更新されます。

Option Strict Off
Option Explicit On

Public Class Form1
Inherits System.Windows.Forms.Form

Dim stiEvents As New SterlingLib.STIEvents
Dim stiQuote As New SterlingLib.STIQuote

Delegate Sub TextBoxUpdater(ByVal byre As TextBox, ByRef str As Object)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    AddHandler stiQuote.OnSTIQuoteSnap, AddressOf OnSTIQuoteSnap
    AddHandler stiQuote.OnSTIQuoteUpdate, AddressOf OnSTIQuoteUpdate
End Sub

Private Sub OnSTIQuoteSnap(ByRef structQuoteSnap As SterlingLib.structSTIQuoteSnap)

    UpdateTextBoxLast(TextBox1, structQuoteSnap.fLastPrice)

End Sub

Private Sub OnSTIQuoteUpdate(ByRef structQuoteUpdate As SterlingLib.structSTIQuoteUpdate)

    If structQuoteUpdate.bLastPrice Then
        UpdateTextBoxLast(TextBox1, structQuoteUpdate.fLastPrice)
    End If

End Sub

Private Sub UpdateTextBoxLast(ByVal lb As TextBox, ByRef str As Object)
    If (lb.InvokeRequired) Then
        Me.BeginInvoke(New TextBoxUpdater(AddressOf UpdateTextBoxLast), lb, str)
    Else
        TextBox1.Text = str

    End If

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    stiQuote.RegisterQuote("IBM", "*")
End Sub

End Class

Sterling Activex API ガイドへのリンク: http://www.sterlingtrader.com/documents/Sterling_ActiveX_API_Guide.pdf

このコードでやりたいことは 2 つあります。

  1. 私がしたいのは、ボタンを押さなくても、テキストボックスが新しい現在の株価で常に更新されるようにすることです。タイマーを使用してこれを行うことができると思いますが、コードのどのセクションを変更する必要があるかは完全にはわかりませんし、Visual Basic でこれを行う方法にも精通していません。

  2. 別のテキスト ボックス/ボタンを作成したいと思います。これを入力してボタンをクリックすることで、取得する相場の銘柄を変更できます。現在、コードは IBM 株を使用しています。これは、次のコード行の「IBM」部分によって決定されます: stiQuote.RegisterQuote("IBM", "*")

この 2 つのことをどのように行うことができますか?

4

1 に答える 1

0

タイマーとプログラムによるボタン クリックの簡単な例を次に示します。

Imports System.Windows.Forms ' one of several namespaces that include timers

Public Class MyForm

    Private MyTimer As Timer

    Private Sub MyForm_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        MyTimer = New Timer
        MyTimer.Interval = 1000 ' 1 second
        MyTimer.Enabled = True
        AddHandler MyTimer.Tick, AddressOf HandleTimer
    End Sub

    Private Sub HandleTimer()
        Button1.PerformClick()
    End Sub

    Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles     Button1.Click
        TextBox1.Text = DateTime.Now.ToString("MM:ss")  
    End Sub

    Private Sub MyForm_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        MyTimer.Dispose()
        MyTimer = Nothing
    End Sub

End Class
于 2012-10-21T18:43:42.093 に答える