![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
UDP Message
Vredina © (2003-08-01 15:20:00)
Привет всем. Такой вопрос, пишу локальный чат с использованием UDP, как можо реализовать посылку сообщений, чтобы от каждого пользователя мессага открывалась в новом окне, если у кого есть сырцы примера плз сбросте на мыло, буду очень признателен.
WhiteShadow (2003-08-13 19:44:00) [1]
Хотя я уже нашел примеры для indy. там все есть
WhiteShadow (2003-08-13 19:28:00) [2]
Неа
Плохиш_ (2003-08-12 19:14:00) [3]
Что <DELPHI>\Demos\Internet\NetChat не помогает?
WhiteShadow (2003-08-12 19:03:00) [4]
Вы бы лучше ценными советами помогли :)
Е-Моё имя (2003-08-12 09:20:00) [5]
Anatoly Podgoretsky © (01.08.03 16:15)
Форумы это базарная площадь, где каждый говорит что хочет, так что оставь задачу надзора модераторам, не лишай их работе.
Если же следовать твоей логике, то если не нравится сообщение, то пропускай его или же дай право и другим писать, то что они хотят. Хотя если ты хочешь сам решать, что кому говорить, а что нет, то просто открой свой форум, славо богу это делается за 5 минут.
это надо вынести в правила или еще куда-нить, на видное место
в рамках изменений форума ;)
WhiteShadow (2003-08-11 21:22:00) [6]
Я смотрю решение вопроса потихоньку уходит в другое русло. Хотелось бы вернуться на прежний путь. У меня тоже возникают вопросы при написании чата. Я вот например вообще не знаю как пользоваться компонентом TUdpSocketю Может кто подскажет где про это можно почитать (только не F1)
Verg (2003-08-02 10:34:00) [7]
> где каждый говорит что хочет,
Вот именно...
Rouse_ (2003-08-02 08:11:00) [8]Хех, чат :)
Ну давай попробую помочь ....
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;
Желаю успехов
Anatoly Podgoretsky (2003-08-01 16:15:00) [9]
Форумы это базарная площадь, где каждый говорит что хочет, так что оставь задачу надзора модераторам, не лишай их работе.
Если же следовать твоей логике, то если не нравится сообщение, то пропускай его или же дай право и другим писать, то что они хотят. Хотя если ты хочешь сам решать, что кому говорить, а что нет, то просто открой свой форум, славо богу это делается за 5 минут.
Vredina (2003-08-01 15:35:00) [10]
Послушай многоуважаемый МНГИЙ, если нет желания помочь, или не знаеш, то и незачем лабуду писать. Для того форумы и созданы, чтоб помогать друг - другу. И если я такую прогу пишу, значит на то есть причины. Спасибо.
Verg (2003-08-01 15:29:00) [11]
Слушай, это что, болезнь такая? - ЧАТ?
Почему МНГИЕ до сих пор это "изобретают" - это что "мода" или "болезнь", или курсовой?