Imports System.Drawing Imports System.Threading Imports System.Windows.Forms Public Class frmMessenger Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim CHAT As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat = Nothing Dim MSG_LISTENDER As New cMessangerListender Public Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub MyDatagridview1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvChats.CellContentClick End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim f As New frmMessenger_NeuerChat f.ShowDialog(Me) End Sub Private Sub frmMessenger_Load(sender As Object, e As EventArgs) Handles Me.Load MSG_LISTENDER.START() intiDGVChats() TimerNEW_MESSAGE.Enabled = True End Sub Sub intiDGVChats() With dgvChats .DataSource = SQL.loadDgvBySql("SELECT [chat_id],chat_name FROM [tblMessenger_Chat] WHERE [chat_aktiv]=1 AND (SELECT COUNT(*) FROM tblMessenger_ChatMembers WHERE chatMB_chatId=chat_id AND chatMB_maId=" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & ")>0", "ADMIN") If .Columns.Count = 0 Then Exit Sub .Columns("chat_id").Visible = False .Columns("chat_name").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill End With End Sub Private Sub dgvChats_SelectionChanged(sender As Object, e As EventArgs) Handles dgvChats.SelectionChanged MyFlowLayoutPanel1.Controls.Clear() If dgvChats.SelectedRows.Count > 0 Then CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value) RELOAD_CHAT() End If End Sub Sub RELOAD_CHAT() MyFlowLayoutPanel1.Controls.Clear() If CHAT IsNot Nothing Then ' CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value) For Each MSG In CHAT.CHAT_MESSAGES Dim CHAT_ITEM As New usrCntlMessenger_ChatElement(MSG) checkUsrId(MSG, CHAT_ITEM) CHAT_ITEM.txtChatmessage.Text = MSG.chatMg_text 'CHAT_ITEM.lblName.Text = MSG.chatMg_maId MyFlowLayoutPanel1.Controls.Add(CHAT_ITEM) Next ' MyFlowLayoutPanel1.VerticalScroll.() 'MyFlowLayoutPanel1.AutoScrollPosition = New Point(MyFlowLayoutPanel1.Width, MyFlowLayoutPanel1.Height) ' If MyFlowLayoutPanel1.Controls.Count > 0 Then MyFlowLayoutPanel1.ScrollControlIntoView(MyFlowLayoutPanel1.Controls(MyFlowLayoutPanel1.Controls.Count - 1)) MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum End If End Sub Sub REFRESH_CHAT() If CHAT IsNot Nothing Then CHAT.LOAD_MESSAGES() ' CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value) For Each MSG In CHAT.CHAT_MESSAGES Dim found As Boolean = False For Each I As usrCntlMessenger_ChatElement In MyFlowLayoutPanel1.Controls If I.CHAT_MSG.chatMg_id = MSG.chatMg_id Then found = True End If Next If Not found Then Dim CHAT_ITEM As New usrCntlMessenger_ChatElement(MSG) checkUsrId(MSG, CHAT_ITEM) CHAT_ITEM.txtChatmessage.Text = MSG.chatMg_text 'CHAT_ITEM.lblName.Text = MSG.chatMg_maId MyFlowLayoutPanel1.Controls.Add(CHAT_ITEM) End If Next ' MyFlowLayoutPanel1.VerticalScroll.() 'MyFlowLayoutPanel1.AutoScrollPosition = New Point(MyFlowLayoutPanel1.Width, MyFlowLayoutPanel1.Height) ' If MyFlowLayoutPanel1.Controls.Count > 0 Then MyFlowLayoutPanel1.ScrollControlIntoView(MyFlowLayoutPanel1.Controls(MyFlowLayoutPanel1.Controls.Count - 1)) MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum End If End Sub 'Sub ORDER_CHAT_MSG() ' If Not CHECK_CHATMSG_ORDER() Then ' For Each I As usrCntlMessenger_ChatElement In MyFlowLayoutPanel1.Controls ' Next ' End If 'End Sub 'Function CHECK_CHATMSG_ORDER() As Boolean ' Dim oldItem = Nothing ' For Each I As usrCntlMessenger_ChatElement In MyFlowLayoutPanel1.Controls ' If oldItem IsNot Nothing And I.CHAT_MSG.chatMg_datetime < oldItem.CHAT_MSG.chatMg_datetime Then ' Return False ' End If ' oldItem = I ' Next ' Return True 'End Function Sub checkUsrId(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages, CHAT_ITEM As usrCntlMessenger_ChatElement) If MSG.chatMg_maId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then CHAT_ITEM.Margin = New Padding(MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30, 0, 0, 0) 'CHAT_ITEM.Left = (MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30) 'CHAT_ITEM.Anchor = AnchorStyles.None 'CHAT_ITEM.Dock = DockStyle.Right ' CHAT_ITEM.Dock = DockStyle.Right CHAT_ITEM.setBgCOLOR(Color.FromArgb(192, 255, 192)) End If End Sub Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click If rtbChatMessage.Text.Trim <> "" Then If CHAT IsNot Nothing Then Dim MSG As New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages(CHAT.chat_id, VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) MSG.chatMg_text = rtbChatMessage.Text.Trim If MSG.SAVE Then SEND_TOKEN_NEW_MESSAGE() ' CHAT.CHAT_MESSAGES.Add(MSG) REFRESH_CHAT() rtbChatMessage.Text = "" rtbChatMessage.Focus() End If End If End If End Sub Sub SEND_TOKEN_NEW_MESSAGE() For Each MB In CHAT.CHAT_MEMBERS If MB.chatMb_maId <> VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then Dim IP = cSession.GET_IP_FROM_MAID(MB.chatMb_maId) If IP <> "" Then Dim SC As New cServerClient ' SC.begin("192.168.0.50", "NEW_MESSAGE") '192.168.0.95 = atlas suben SC.begin(IP, "NEW_MESSAGE") MsgBox(IP) End If End If Next 'SC.waitTillFinished() 'Thread.Sleep(1000) 'If SC.status = "TaskSuccess" Then 'Else 'End If End Sub Private Sub rtbChatMessage_KeyDown(sender As Object, e As KeyEventArgs) Handles rtbChatMessage.KeyDown If e.Modifiers = Keys.Control And e.KeyCode = Keys.Return Then btn.PerformClick() e.Handled = True End If End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click If rtbChatMessage.Text.Trim <> "" Then If CHAT IsNot Nothing Then Dim MSG As New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages(CHAT.chat_id, VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) MSG.chatMg_text = rtbChatMessage.Text.Trim MSG.chatMg_maId = 99 If MSG.SAVE Then ' CHAT.CHAT_MESSAGES.Add(MSG) CHAT.LOAD_MESSAGES() REFRESH_CHAT() rtbChatMessage.Text = "" rtbChatMessage.Focus() End If End If End If End Sub Private Sub TimerNEW_MESSAGE_Tick(sender As Object, e As EventArgs) Handles TimerNEW_MESSAGE.Tick If CHAT IsNot Nothing And VERAG_PROG_ALLGEMEIN.cMessenger.NEW_MESSGE = True Then VERAG_PROG_ALLGEMEIN.cMessenger.NEW_MESSGE = False MsgBox("asd") REFRESH_CHAT() End If End Sub End Class