Конференция "Прочее" » Чат внутри программы
 
  • pavelnk © (23.03.16 04:18) [0]
    Приветствую! Подскажите пожалуйста. Вот пришла идея, но не совсем представляю как её реализовать. Хотелось бы в программу поставить маленький чат, чтобы пользователи не чувствовали себя разрозненно. Чтобы могли советоваться между собой прямо во время пользования программой. Пока я вижу только один путь - поставить веббраузер. Но он кажется слабенький для такой задачи, даже блок div не поддерживает.
  • Kerk © (23.03.16 05:06) [1]
    (facepalm)
  • pavelnk © (23.03.16 05:28) [2]
    > Kerk ©   (23.03.16 05:06) [1]
    > (facepalm)
    А что не так? Насчёт браузера? Без веб странички я не представляю как это сделать. div он похоже точно не поддерживает, я кажется как то пробовал.
  • Kilkennycat © (23.03.16 07:49) [3]
    ну без вебстранички это, например, в любом контроле, в котором можно написать типа:

    -привет!
    -привет!
    -классная программа?
    -офигенная, перестал чувствовать себя одиноко!



    под такое подходит практически все.

    а как div связан с чатом???
  • Kilkennycat © (23.03.16 07:51) [4]

    > div он похоже точно не поддерживает



    -привет!<br>
    -привет!<br>
    -классная программа?<br>
    -офигенная, без див!<br>

  • Dimka Maslov © (23.03.16 08:29) [5]

    > А что не так?


    Например в фотошопе на JavaScript можно сделать чатик, а вот многие полезные вещи сделать нельзя. Или в автокаде - это чам лезет отовсюду (ему при установке говоришь - не ставь это дрянь, всё равно ставит и высвечивает при каждом запуска), а чертить в новой верии стало невозможно. Уж лучше программа останется программой (для тех, кому работать надо), а чат будет на сайте программы (для тех кому одиноко).
  • pavelnk © (23.03.16 09:39) [6]
    > Kilkennycat ©   (23.03.16 07:49) [3]
    > ну без вебстранички это, например, в любом контроле, в котором
    > можно написать типа:
    Контрол это одно, а как другие увидят что он написал?
  • megavoid © (23.03.16 09:40) [7]

    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;
  • эндсоувот © (23.03.16 09:51) [8]
    Контрол это одно, а как другие увидят что он написал?

    точно так же как и в случае с дивом, не?
  • эндсоувот © (23.03.16 09:53) [9]
    хотя нет.
    сейчас вставил у себя див, и не вижу что сейчас пишет pavelnk.
    наверное надо еще что-то программировать.
    или спан вместо дива попробовать
  • megavoid © (23.03.16 10:04) [10]
    ах, а пользователи-то, наверное, не в локалке
    ну тогда точно через див :)
  • pavelnk © (23.03.16 10:08) [11]
    > megavoid ©   (23.03.16 09:40) [7]
    Интересно, chatlog.dat это просто тхт файлик на сервере? Что то не вижу как он на сервере будет обновляться.
  • megavoid © (23.03.16 10:13) [12]
    А это маленькая интрига, чтобы не копипастил бездумно :)
    Сервера в этой архитектуре нет, но все клиенты сами себе серверы, плюс дело происходит в локальной сети.
  • Rouse_ © (23.03.16 21:05) [13]
    Прикольная идея :)
    У нас конкуренты в своем сметном ПО внедрили тетрис (не шучу), в который можно играть прямо во время разработки сметы не выходя из IDE :)
    Пользователи это, правда не оценили - но прецедент имеется :)
  • Rouse_ © (23.03.16 21:09) [14]
    Опс, забыл - мотивировали тем что их пользователь (сметчик, в данном случае) должен же как нибудь расслабляться на рабочем месте :)
    Мол пишем супер дружественный софт :)))
  • Kilkennycat © (24.03.16 01:47) [15]

    > megavoid ©

    мегапросто. но не везде прокатит удп
  • Eraser © (24.03.16 02:48) [16]

    > pavelnk ©   (23.03.16 04:18) 

    идея неплохая, если у программы есть приличное количество пользователей.
    но тогда "поставить маленький чат" не подойдет, нужна будет полноценная система, с регистрацией, защитой от флуда, спама, каналами обсуждения, региональным разделением и модерацией )

    вот в делфи был бы такой чатик, вот то бы зажили! прямо в IDE можно спросить, как запуздырить иконку в трей. что-то в этой идее есть ))
  • Kilkennycat © (24.03.16 04:19) [17]

    > Eraser ©   (24.03.16 02:48) [16]

    и "потрепаться" туда же!
  • ВладОшин © (24.03.16 12:07) [18]

    > Rouse_ ©   (23.03.16 21:09) [14]

    а на ахтунги тетенька полуодетая пусть пальчиком грозит и при клике Ok томным голосом Ах, какой решительный мужчина.. ))
  • Kilkennycat © (24.03.16 14:08) [19]
    одним словом - весна...
 
Конференция "Прочее" » Чат внутри программы
Есть новые Нет новых   [134434   +27][b:0][p:0.026]