2012-01-13 2 views
0

レコードの部分的なロックであなたの助けが必要です。これは、シフトチェンジがあり、1人のレコードが1人で開始され、別のレコードで終了した場合の状況です。誰かが書いたものは変更できませんが、記録を完成させなければなりません。したがって、コンボボックスと入力されたテキストボックスのみをロックする必要があります。このコードは、NEZAVRSENE_INTERVENCIJEチェックボックスをクリックして、すべてのコンボボックスとテキストボックスと2つのチェックボックス(NEZAVRSENE_INTERVENCIJEとIZMENA_RASKRSNICE)をロックします。私はコンボボックス1,2および3とテキストボックス1,2および3を持っていると私は満ちているものだけをロックする必要があると言うことができます。塗りつぶされたコントロールだけをロックする別のチェックボックスを作成するにはどうすればよいですか?塗りつぶされたコントロールのみを選択してロックする

おかげ

Private Sub NEZAVRSENE_INTERVENCIJE_AfterUpdate() 
Dim ctrl As Control 

If Me.NEZAVRSENE_INTERVENCIJE = -1 Then 

For Each ctrl In Me.Controls 

If (TypeOf ctrl Is TextBox) Or (ctrl Is NEZAVRSENE_INTERVENCIJE) Or (ctrl Is IZMENA_RASKRSNICE) Or (TypeOf ctrl Is ComboBox) Then 
ctrl.Locked = True 

End If 
Next 

Else 

For Each ctrl In Me.Controls 

If (TypeOf ctrl Is TextBox) Or (ctrl Is NEZAVRSENE_INTERVENCIJE) Or (ctrl Is IZMENA_RASKRSNICE) Or (TypeOf ctrl Is ComboBox) Then 
    ctrl.Locked = False 

End If 
Next 

End If 
End Sub 
+0

論理を一部整理する必要があります。この場合、「1つ」を使用するべきではありません。 – Origin

+0

なぜあなたのコントロールにALL_CAPSで名前を付けますか? –

答えて

0

はこのような何かを試してみてください。 Control.Tagプロパティを使用して、ロックしたいコントロールをグループ化しています。

Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged 
    Dim ctrl As Control 

    For Each ctrl In Me.Controls 
     If Not IsNothing(ctrl.Tag) Then 
      If CInt(ctrl.Tag) = 1 Then 
       If ctrl.Text <> String.Empty Then 
        ctrl.Enabled = False 
       End If 
      End If 
     End If 
    Next 

End Sub 
関連する問題