Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.031 c
7-40711
__Ed__
2003-07-25 18:47
2003.10.13
Обновление списка оборудования в системе


7-40704
qwerty2
2003-07-27 11:55
2003.10.13
Установить программно сетевой принтер


1-40486
Plt
2003-10-01 17:28
2003.10.13
QuantumGrid


14-40572
Игорь Шевченко
2003-09-23 13:38
2003.10.13
Ищется антиквариат


14-40589
Khloo!
2003-09-25 15:09
2003.10.13
VBA - Visual Basic for Applicationl