Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
6-40547
pavel_guzhanov
2003-08-15 13:31
2003.10.13
Сервер и клиент при помощи Indy


1-40389
evgeniy1980
2003-10-01 11:58
2003.10.13
И снова Qreport


14-40675
Владислав
2003-09-18 12:57
2003.10.13
Нужна информация по СУБД.


9-40221
сергей
2003-04-09 15:58
2003.10.13
прорисовка файла


1-40358
ruslan_as
2003-10-01 17:24
2003.10.13
Как заменить в строке поставленные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский