Текущий архив: 2003.10.13;
Скачать: CL | DM;
Вниз
UDP Message Найти похожие ветки
← →
Vredina (2003-08-01 15:20) [0]Привет всем. Такой вопрос, пишу локальный чат с использованием UDP, как можо реализовать посылку сообщений, чтобы от каждого пользователя мессага открывалась в новом окне, если у кого есть сырцы примера плз сбросте на мыло, буду очень признателен.
← →
Verg (2003-08-01 15:29) [1]Слушай, это что, болезнь такая? - ЧАТ?
Почему МНГИЕ до сих пор это "изобретают" - это что "мода" или "болезнь", или курсовой?
← →
Vredina (2003-08-01 15:35) [2]Послушай многоуважаемый МНГИЙ, если нет желания помочь, или не знаеш, то и незачем лабуду писать. Для того форумы и созданы, чтоб помогать друг - другу. И если я такую прогу пишу, значит на то есть причины. Спасибо.
← →
Anatoly Podgoretsky (2003-08-01 16:15) [3]Форумы это базарная площадь, где каждый говорит что хочет, так что оставь задачу надзора модераторам, не лишай их работе.
Если же следовать твоей логике, то если не нравится сообщение, то пропускай его или же дай право и другим писать, то что они хотят. Хотя если ты хочешь сам решать, что кому говорить, а что нет, то просто открой свой форум, славо богу это делается за 5 минут.
← →
Rouse_ (2003-08-02 08:11) [4]Хех, чат :)
Ну давай попробую помочь ....
procedure TForm1.InMessageForm(Nick, Msg, IP, MAC: String);
var
tmpForm:TForm;
tmpMemo:TMemo;
tmpBevel1,tmpBevel2:TBevel;
tmpButton1, tmpButton2, tmpButton3, tmpButton4: TButton;
tmpLabel:TLabel;
OldTimeOut: DWORD;
tmpMenu:TMainMenu;
tmpItem:TMenuItem;
begin
IncError;
ErrorCodeZool := "Error code A0012";
tmpForm := TForm.Create(nil);
tmpForm.Caption := Lang[55]+" "+Nick;
tmpForm.Position := poScreenCenter;
tmpForm.BorderStyle := bsSingle;
tmpForm.BorderIcons := [biSystemMenu,biMinimize];
tmpForm.ClientWidth := 359;
tmpForm.ClientHeight := 148;
tmpForm.KeyPreview := True;
tmpForm.Tag := 100;
tmpForm.OnKeyDown := RichEdit1.OnKeyDown;
tmpForm.OnClose := ReleaseWindow;
tmpForm.Hint := IP;
tmpMemo := TMemo.Create(tmpForm);
tmpMemo.Parent := tmpForm;
tmpMemo.Left := 16;
tmpMemo.Top := 16;
tmpMemo.Height := 89;
tmpMemo.Width := 329;
tmpMemo.ScrollBars := ssVertical;
tmpMemo.ReadOnly := True;
tmpMemo.Font.Style := [fsBold];
tmpMemo.Font.Name := "Microsoft Sans Serif";
tmpMemo.Text := Msg;
tmpMemo.Hint := Mac;
tmpBevel1 := TBevel.Create(tmpForm);
tmpBevel1.Parent := tmpForm;
tmpBevel1.Style := bsLowered;
tmpBevel1.Left := 8;
tmpBevel1.Top := 8;
tmpBevel1.Height := 105;
tmpBevel1.Width := 345;
tmpBevel2 := TBevel.Create(tmpForm);
tmpBevel2.Parent := tmpForm;
tmpBevel2.Style := bsRaised;
tmpBevel2.Left := 6;
tmpBevel2.Top := 6;
tmpBevel2.Height := 109;
tmpBevel2.Width := 349;
tmpLabel := TLabel.Create(tmpForm);
tmpLabel.Parent := tmpForm;
tmpLabel.Caption := "["+datetostr(Date)+" "+ timetostr(Time)+"] "+Lang[56];
tmpLabel.Left := 24;
tmpLabel.Top := 0;
tmpButton2 := TButton.Create(tmpForm);
tmpButton2.Parent := tmpForm;
tmpButton2.Top := 120;
tmpButton2.Left := 8;
tmpButton2.Caption := Lang[57];
tmpButton2.Cancel := True;
tmpButton2.OnClick := CloseWindow;
tmpButton4 := TButton.Create(tmpForm);
tmpButton4.Parent := tmpForm;
tmpButton4.Top := 120;
tmpButton4.Left := 112;
tmpButton4.Caption := Lang[58];
tmpButton4.Cancel := True;
//tmpButton4.OnClick := CloseWindow;
tmpButton4.Enabled := False;
tmpButton1 := TButton.Create(tmpForm);
tmpButton1.Parent := tmpForm;
tmpButton1.Top := 120;
tmpButton1.Left := 192;
tmpButton1.Caption := Lang[59];
tmpButton1.OnClick := ResumeInMessageForm;
tmpButton3 := TButton.Create(tmpForm);
tmpButton3.Parent := tmpForm;
tmpButton3.Top := 120;
tmpButton3.Left := 272;
tmpButton3.Caption := Lang[60];
tmpButton3.Cancel := True;
tmpButton3.OnClick := ResumeInMessageFormCit;
tmpMenu := TMainMenu.Create(tmpForm);
tmpItem := TMenuItem.Create(tmpMenu);
tmpItem.OnClick := _Convert;
tmpItem.Visible := False;
tmpItem.ShortCut := 16392;
tmpMenu.Items.Add(tmpItem);
//Показываем окно на панели задач
if GetWindowLong(tmpForm.Handle, GWL_HWNDPARENT)<>0 then
SetWindowLong(tmpForm.Handle, GWL_HWNDPARENT, 0);
case MyStatus of
0: begin
tmpForm.Show;
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @OldTimeOut, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(000), 0);
SetForegroundWindow(tmpForm.Handle);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(OldTimeOut), 0);
tmpMemo.SelStart := Length(tmpMemo.Text);
SendMessage(tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0) ;
end;
1: begin //DND
tmpForm.WindowState := wsMinimized;
SetWindowLong(tmpForm.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE+WS_EX_APPWINDOW);
tmpForm.Show;
tmpMemo.SelStart := Length(tmpMemo.Text);
SendMessage(tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0) ;
end;
2: begin //Away
SetWindowLong(tmpForm.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE+WS_EX_APPWINDOW);
tmpForm.Show;
tmpMemo.SelStart := Length(tmpMemo.Text);
SendMessage(tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0) ;
end;
3: ; //OffLine
4: begin //Game
tmpForm.WindowState := wsMinimized;
SetWindowLong(tmpForm.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE+WS_EX_APPWINDOW);
tmpForm.Show;
tmpMemo.SelStart := Length(tmpMemo.Text);
( tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0)Хех, чат :)
Ну давай попробую помочь ....
procedure TForm1.InMessageForm(Nick, Msg, IP, MAC: String);
var
tmpForm:TForm;
tmpMemo:TMemo;
tmpBevel1,tmpBevel2:TBevel;
tmpButton1, tmpButton2, tmpButton3, tmpButton4: TButton;
tmpLabel:TLabel;
OldTimeOut: DWORD;
tmpMenu:TMainMenu;
tmpItem:TMenuItem;
begin
IncError;
ErrorCodeZool := "Error code A0012";
tmpForm := TForm.Create(nil);
tmpForm.Caption := Lang[55]+" "+Nick;
tmpForm.Position := poScreenCenter;
tmpForm.BorderStyle := bsSingle;
tmpForm.BorderIcons := [biSystemMenu,biMinimize];
tmpForm.ClientWidth := 359;
tmpForm.ClientHeight := 148;
tmpForm.KeyPreview := True;
tmpForm.Tag := 100;
tmpForm.OnKeyDown := RichEdit1.OnKeyDown;
tmpForm.OnClose := ReleaseWindow;
tmpForm.Hint := IP;
tmpMemo := TMemo.Create(tmpForm);
tmpMemo.Parent := tmpForm;
tmpMemo.Left := 16;
tmpMemo.Top := 16;
tmpMemo.Height := 89;
tmpMemo.Width := 329;
tmpMemo.ScrollBars := ssVertical;
tmpMemo.ReadOnly := True;
tmpMemo.Font.Style := [fsBold];
tmpMemo.Font.Name := "Microsoft Sans Serif";
tmpMemo.Text := Msg;
tmpMemo.Hint := Mac;
tmpBevel1 := TBevel.Create(tmpForm);
tmpBevel1.Parent := tmpForm;
tmpBevel1.Style := bsLowered;
tmpBevel1.Left := 8;
tmpBevel1.Top := 8;
tmpBevel1.Height := 105;
tmpBevel1.Width := 345;
tmpBevel2 := TBevel.Create(tmpForm);
tmpBevel2.Parent := tmpForm;
tmpBevel2.Style := bsRaised;
tmpBevel2.Left := 6;
tmpBevel2.Top := 6;
tmpBevel2.Height := 109;
tmpBevel2.Width := 349;
tmpLabel := TLabel.Create(tmpForm);
tmpLabel.Parent := tmpForm;
tmpLabel.Caption := "["+datetostr(Date)+" "+ timetostr(Time)+"] "+Lang[56];
tmpLabel.Left := 24;
tmpLabel.Top := 0;
tmpButton2 := TButton.Create(tmpForm);
tmpButton2.Parent := tmpForm;
tmpButton2.Top := 120;
tmpButton2.Left := 8;
tmpButton2.Caption := Lang[57];
tmpButton2.Cancel := True;
tmpButton2.OnClick := CloseWindow;
tmpButton4 := TButton.Create(tmpForm);
tmpButton4.Parent := tmpForm;
tmpButton4.Top := 120;
tmpButton4.Left := 112;
tmpButton4.Caption := Lang[58];
tmpButton4.Cancel := True;
//tmpButton4.OnClick := CloseWindow;
tmpButton4.Enabled := False;
tmpButton1 := TButton.Create(tmpForm);
tmpButton1.Parent := tmpForm;
tmpButton1.Top := 120;
tmpButton1.Left := 192;
tmpButton1.Caption := Lang[59];
tmpButton1.OnClick := ResumeInMessageForm;
tmpButton3 := TButton.Create(tmpForm);
tmpButton3.Parent := tmpForm;
tmpButton3.Top := 120;
tmpButton3.Left := 272;
tmpButton3.Caption := Lang[60];
tmpButton3.Cancel := True;
tmpButton3.OnClick := ResumeInMessageFormCit;
tmpMenu := TMainMenu.Create(tmpForm);
tmpItem := TMenuItem.Create(tmpMenu);
tmpItem.OnClick := _Convert;
tmpItem.Visible := False;
tmpItem.ShortCut := 16392;
tmpMenu.Items.Add(tmpItem);
//Показываем окно на панели задач
if GetWindowLong(tmpForm.Handle, GWL_HWNDPARENT)<>0 then
SetWindowLong(tmpForm.Handle, GWL_HWNDPARENT, 0);
case MyStatus of
0: begin
tmpForm.Show;
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @OldTimeOut, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(000), 0);
SetForegroundWindow(tmpForm.Handle);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(OldTimeOut), 0);
tmpMemo.SelStart := Length(tmpMemo.Text);
SendMessage(tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0) ;
end;
1: begin //DND
tmpForm.WindowState := wsMinimized;
SetWindowLong(tmpForm.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE+WS_EX_APPWINDOW);
tmpForm.Show;
tmpMemo.SelStart := Length(tmpMemo.Text);
SendMessage(tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0) ;
end;
2: begin //Away
SetWindowLong(tmpForm.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE+WS_EX_APPWINDOW);
tmpForm.Show;
tmpMemo.SelStart := Length(tmpMemo.Text);
SendMessage(tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0) ;
end;
3: ; //OffLine
4: begin //Game
tmpForm.WindowState := wsMinimized;
SetWindowLong(tmpForm.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE+WS_EX_APPWINDOW);
tmpForm.Show;
tmpMemo.SelStart := Length(tmpMemo.Text);
SendMessage(tmpMemo.Handle,EM_SCROLLCARET,SB_BOTTOM,0) ;
end;
end;
end;
Желаю успехов
← →
Verg (2003-08-02 10:34) [5]
> где каждый говорит что хочет,
Вот именно...
← →
WhiteShadow (2003-08-11 21:22) [6]Я смотрю решение вопроса потихоньку уходит в другое русло. Хотелось бы вернуться на прежний путь. У меня тоже возникают вопросы при написании чата. Я вот например вообще не знаю как пользоваться компонентом TUdpSocketю Может кто подскажет где про это можно почитать (только не F1)
← →
Е-Моё имя (2003-08-12 09:20) [7]Anatoly Podgoretsky © (01.08.03 16:15)
Форумы это базарная площадь, где каждый говорит что хочет, так что оставь задачу надзора модераторам, не лишай их работе.
Если же следовать твоей логике, то если не нравится сообщение, то пропускай его или же дай право и другим писать, то что они хотят. Хотя если ты хочешь сам решать, что кому говорить, а что нет, то просто открой свой форум, славо богу это делается за 5 минут.
это надо вынести в правила или еще куда-нить, на видное место
в рамках изменений форума ;)
← →
WhiteShadow (2003-08-12 19:03) [8]Вы бы лучше ценными советами помогли :)
← →
Плохиш_ (2003-08-12 19:14) [9]Что <DELPHI>\Demos\Internet\NetChat не помогает?
← →
WhiteShadow (2003-08-13 19:28) [10]Неа
← →
WhiteShadow (2003-08-13 19:44) [11]Хотя я уже нашел примеры для indy. там все есть
Страницы: 1 вся ветка
Текущий архив: 2003.10.13;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.01 c