-
Приветствую! Подскажите пожалуйста. Вот пришла идея, но не совсем представляю как её реализовать. Хотелось бы в программу поставить маленький чат, чтобы пользователи не чувствовали себя разрозненно. Чтобы могли советоваться между собой прямо во время пользования программой. Пока я вижу только один путь - поставить веббраузер. Но он кажется слабенький для такой задачи, даже блок 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 томным голосом Ах, какой решительный мужчина.. ))
-
одним словом - весна...
-
> но прецедент имеется :)
о, запилить толпой ТДмЧатс и комнаты на delphimaster.ru/chat сдавать - вот и монетизация!
А вы потенциального клиента отпугиваете - нехорошо ))
-
Мне идея тоже и сразу понравилась.:)
Я бы расширил, ориентируясь на старшие компании, до облака, с хранением всех проектов, материалов, заготовок и прочих чертежей в нём.
-
к чату обязательно поиск по анкетам с фотками, знакомства и встроенные онлайн игры
-
Онлайн покер был бы кстати.
За одно отдельной кнопкой ввести функцию: отдамся в ипотеку
-
Онлайн покер был бы кстати.
За одно отдельной кнопкой ввести функцию: отдамся в ипотеку
-
Онлайн покер был бы кстати.
За одно отдельной кнопкой ввести функцию: отдамся в ипотеку