-
Приветствую! Подскажите пожалуйста. Вот пришла идея, но не совсем представляю как её реализовать. Хотелось бы в программу поставить маленький чат, чтобы пользователи не чувствовали себя разрозненно. Чтобы могли советоваться между собой прямо во время пользования программой. Пока я вижу только один путь - поставить веббраузер. Но он кажется слабенький для такой задачи, даже блок div не поддерживает.
-
(facepalm)
-
> Kerk © (23.03.16 05:06) [1] > (facepalm) А что не так? Насчёт браузера? Без веб странички я не представляю как это сделать. div он похоже точно не поддерживает, я кажется как то пробовал.
-
ну без вебстранички это, например, в любом контроле, в котором можно написать типа: -привет!
-привет!
-классная программа?
-офигенная, перестал чувствовать себя одиноко! под такое подходит практически все. а как div связан с чатом???
-
> div он похоже точно не поддерживает
-привет!<br>
-привет!<br>
-классная программа?<br>
-офигенная, без див!<br>
-
> А что не так?
Например в фотошопе на JavaScript можно сделать чатик, а вот многие полезные вещи сделать нельзя. Или в автокаде - это чам лезет отовсюду (ему при установке говоришь - не ставь это дрянь, всё равно ставит и высвечивает при каждом запуска), а чертить в новой верии стало невозможно. Уж лучше программа останется программой (для тех, кому работать надо), а чат будет на сайте программы (для тех кому одиноко).
-
> Kilkennycat © (23.03.16 07:49) [3] > ну без вебстранички это, например, в любом контроле, в котором > можно написать типа: Контрол это одно, а как другие увидят что он написал?
-
procedure TForm17.BitBtn1Click(Sender: TObject); begin idUDPClient1.SendBuffer(BytesOf(FIO + ': ' + Memo1.Text)); Memo1.Lines.Clear; Panel1.Caption := '0'; end;
procedure TForm17.BitBtn3Click(Sender: TObject); begin if MessageBox(Handle, 'Delete chat history?', 'Messages', MB_OKCANCEL or MB_ICONQUESTION) = IDOK then try RichEdit1.Clear; DeleteFile(AppDir + 'chatlog.dat'); except end; end;
procedure TForm17.FormClose(Sender: TObject; var Action: TCloseAction); begin IdUDPServer1.Active := False; IdUDPClient1.Active := False; try RichEdit1.Lines.SaveToFile(AppDir + 'chatlog.dat'); except end; end;
procedure TForm17.FormCreate(Sender: TObject); begin if FileExists(AppDir + 'chatlog.dat') then try RichEdit1.Lines.LoadFromFile(AppDir + 'chatlog.dat'); except end; end;
procedure TForm17.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #27 then begin Key := #0; Close; end; end;
procedure TForm17.FormShow(Sender: TObject); begin IdUDPServer1.Active := True; IdUDPClient1.Active := True; end;
procedure AddColoredLine(ARichEdit: TRichEdit; AText: string; AColor: TColor; IsBold: Boolean); begin with ARichEdit do begin SelStart := Length(Text); SelAttributes.Color := AColor; SelAttributes.Size := 8; // SelAttributes.Name := 'MS Sans Serif'; if IsBold then SelAttributes.Style := [fsBold]; Lines.Add(AText); end; ARichEdit.Perform(WM_VSCROLL, SB_BOTTOM, 0); end;
procedure TForm17.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; AData: TBytes; ABinding: TIdSocketHandle); begin AddColoredLine(RichEdit1, TimeToStr(Now) + ' ' + StringOf(AData), clBlack, False); end;
procedure TForm17.Memo1Change(Sender: TObject); begin Panel1.Caption := IntToStr(Length(Memo1.Text)); end;
procedure TForm17.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = 13) then if (ssShift in Shift) then Exit else begin Key := VK_BACK; BitBtn1.Click; end; end;
-
Контрол это одно, а как другие увидят что он написал?
точно так же как и в случае с дивом, не?
-
хотя нет. сейчас вставил у себя див, и не вижу что сейчас пишет pavelnk. наверное надо еще что-то программировать. или спан вместо дива попробовать
-
ах, а пользователи-то, наверное, не в локалке ну тогда точно через див :)
-
> megavoid © (23.03.16 09:40) [7] Интересно, chatlog.dat это просто тхт файлик на сервере? Что то не вижу как он на сервере будет обновляться.
-
А это маленькая интрига, чтобы не копипастил бездумно :) Сервера в этой архитектуре нет, но все клиенты сами себе серверы, плюс дело происходит в локальной сети.
-
Прикольная идея :) У нас конкуренты в своем сметном ПО внедрили тетрис (не шучу), в который можно играть прямо во время разработки сметы не выходя из IDE :) Пользователи это, правда не оценили - но прецедент имеется :)
-
Опс, забыл - мотивировали тем что их пользователь (сметчик, в данном случае) должен же как нибудь расслабляться на рабочем месте :) Мол пишем супер дружественный софт :)))
-
> megavoid ©
мегапросто. но не везде прокатит удп
-
> pavelnk © (23.03.16 04:18)
идея неплохая, если у программы есть приличное количество пользователей. но тогда "поставить маленький чат" не подойдет, нужна будет полноценная система, с регистрацией, защитой от флуда, спама, каналами обсуждения, региональным разделением и модерацией )
вот в делфи был бы такой чатик, вот то бы зажили! прямо в IDE можно спросить, как запуздырить иконку в трей. что-то в этой идее есть ))
-
> Eraser © (24.03.16 02:48) [16]
и "потрепаться" туда же!
-
> Rouse_ © (23.03.16 21:09) [14]
а на ахтунги тетенька полуодетая пусть пальчиком грозит и при клике Ok томным голосом Ах, какой решительный мужчина.. ))
-
одним словом - весна...
|