Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2010, 09:55
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию Об Combobox и др

1.Как сделать чтобы текст из выпадающего списка при нажатии попадал в едит?

2. Реально ли в чате по локальной сети использовать смайлики-картинки?

Спасибо
Ответить с цитированием
  #2  
Старый 07.11.2010, 12:34
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Цитата:
Сообщение от true
1.Как сделать чтобы текст из выпадающего списка при нажатии попадал в едит?

Код:
edit1.Text:=combobox1.Text;

Цитата:
Сообщение от true
2. Реально ли в чате по локальной сети использовать смайлики-картинки?
Спасибо

Да возможно! смайлики грузишь на все компы которых установлен твой чат
дописывать программу - каждому смалику присвоить какой нить код
к примеру :-)
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #3  
Старый 07.11.2010, 13:14
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию


Electronic_Arts,
Спасибо за ответ, но
Я имею ввиду нажал на одну строчку он вставился в эдит, как это сделать?)

А по второму вопросу есть что почитать, или может сможешь обьяснить в краце?)
Изображения
Тип файла: png Безымянный.png (5.8 Кбайт, 13 просмотров)
Ответить с цитированием
  #4  
Старый 07.11.2010, 13:46
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Я же указал уже наверху
вот так это делается - присваиваем Едиту - выбранное значение из Комбо

Код:
edit1.Text:=combobox1.Text;

А насчет второго вопроса - я никогда не писал чаты - я просто технологию знаю как смайлик отображается на чате...
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #5  
Старый 07.11.2010, 14:05
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Код:
edit1.Text:=comboxox1.Items[ComboBox1.ItemIndex];
На счет второго: используй RichView (платный компонент), в него можно вставлять картинки. Но можно найти ранние версии, они были бесплатные, с исходниками.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #6  
Старый 07.11.2010, 14:14
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

Цитата:
Сообщение от v1s2222
Код:
edit1.Text:=comboxox1.Items[ComboBox1.ItemIndex];
На счет второго: используй RichView (платный компонент), в него можно вставлять картинки. Но можно найти ранние версии, они были бесплатные, с исходниками.

Спасибо Но это опять не то, мне нужно чтобы в комбобокс нажал на одну из Item чтобы ее текст скопировался в Едит и все, никуда не отправлялся только копировался

есть еще один вопросик
Код:
memo1.Lines.SaveToFile('log\log'+'['+DateToStr(Date)+']'+'.txt');
if FileExists('log\log'+'['+DateToStr(Date)+']'+'.txt') then
memo1.Lines.SaveToFile('log\log'+'['+DateToStr(Date)+']'+'_'+'.txt');

Как не перезаписать файл а например в этот же файл добавить строки из мемо, но я хочу чтобы по конкретному дню

Последний раз редактировалось true, 07.11.2010 в 14:35.
Ответить с цитированием
  #7  
Старый 07.11.2010, 14:32
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Если ты хочешь работать именно с мемо, то можно так:
Код:
if(FileExists(имя файла.txt)) then begin
MemoBufer.Lines.LoadFromFile(имя файла.txt);
MemoBufer.Lines.Add(Memo1.Text);

MemoBufer.Lines.SaveToFile(имя файла.txt);
end;

То бишь тут используется еще одно мемо, и если файл уже есть, то в новое мемо этот файл загружается, после чего идет добавления в это же мемо нового текста, и сохранение в тот же файл.
ЗЫ "имя файла.txt" это и есть имя файла, пример: "'log\log'+'['+DateToStr(Date)+']'+'.txt'".
__________________
Помогаю за Спасибо
Ответить с цитированием
  #8  
Старый 07.11.2010, 14:39
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

Цитата:
Сообщение от v1s2222
Если ты хочешь работать именно с мемо, то можно так:
Код:
if(FileExists(имя файла.txt)) then begin
MemoBufer.Lines.LoadFromFile(имя файла.txt);
MemoBufer.Lines.Add(Memo1.Text);

MemoBufer.Lines.SaveToFile(имя файла.txt);
end;

То бишь тут используется еще одно мемо, и если файл уже есть, то в новое мемо этот файл загружается, после чего идет добавления в это же мемо нового текста, и сохранение в тот же файл.
ЗЫ "имя файла.txt" это и есть имя файла, пример: "'log\log'+'['+DateToStr(Date)+']'+'.txt'".

MemoBufer - ошибку выдает
Ответить с цитированием
  #9  
Старый 07.11.2010, 14:51
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Цитата:
Сообщение от true
MemoBufer - ошибку выдает
Тебе же сказали добавь еще один Memo2 - вот этот MemoBufer и является другим Memo2
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #10  
Старый 07.11.2010, 15:06
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

да нее не то все, теперь он вообще не сохраняет
Ответить с цитированием
  #11  
Старый 07.11.2010, 15:14
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Смотри, объясню еще раз:
если ты пытаешься сохранить мемо и там вдруг на эту дату уже есть файл, значит нам надо дописать в этот файл еще что-то.
Для этого создаем еще одно мемо (невидимое, visible:=false), или вообще создаем переменную S: TStringList;
И при сохранении, если файл с сегодняшней датой уже есть, то мы берем этот буфер (дополнительное мемо), загружаем в него весь файл (который есть сейчас на диске), и дописываем туда то, что ты хотел добавить, после этого просто перезаписываем файл с сегодняшней датой. В результате чего файл будет не заменен на новый, а дописан.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #12  
Старый 08.11.2010, 09:41
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

Ну не добовляет он новых строк, мало того он их теперь вообще не добовляет
Ответить с цитированием
  #13  
Старый 08.11.2010, 15:23
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Тут надо понять то, что ты хочешь сделать. Если понял - теперь подумай, почему он может не работать, я ж твоего кода не вижу, или покажи код.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #14  
Старый 09.11.2010, 10:28
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

Держи:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, ComCtrls, ToolWin, StdCtrls, ExtCtrls, XPMan, Menus;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Memo1: TMemo;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    Panel1: TPanel;
    Edit1: TEdit;
    Panel2: TPanel;
    Edit2: TEdit;
    Button1: TButton;
    Timer1: TTimer;
    ListBox1: TListBox;
    ControlBar1: TControlBar;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    vremya: TTimer;
    XPManifest1: TXPManifest;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    Splitter3: TSplitter;
    Panel3: TPanel;
    ComboBox1: TComboBox;
    ToolButton3: TToolButton;
    CheckBox1: TCheckBox;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    About1: TMenuItem;
    SaveDialog1: TSaveDialog;
    N9: TMenuItem;
    ToolButton4: TToolButton;
    texttimer: TTimer;
    MemoBufer: TMemo;
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure vremyaTimer(Sender: TObject);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ToolButton3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure texttimerTimer(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var

  Form1: TForm1;
  t: string;
  nick:string;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
If ClientSocket1.Active=False then ClientSocket1.Active:=true;
StatusBar1.Panels.Items[1].Text:='Подключен';
Memo1.Lines.Add('Клиент подключен к серверу '+'['+DateToStr(Date) + ']' +' '+ '[' + TimetoStr(time)+ ']') ;
texttimer.Enabled:=true;
end;

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
ClientSocket1.Active:=False;
StatusBar1.Panels.Items[1].Text:='Отключен';
Memo1.Lines.Add('Клиент откючен от сервера: '+'['+DateToStr(Date) + ']' +' '+ '[' + TimetoStr(time)+ ']') ;
texttimer.Enabled:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin

{Если мы хотим послать приватное сообщение, но не выбрали адресата -
   нас покарают замечанием :) и выгонят из обработчика}
  if (CheckBox1.Checked)and(ListBox1.ItemIndex < 0) then begin
   ShowMessage('Вы должы выбрать кому посылать сообщение в юзерлисте!');
   Exit;
  end;
  {Если это приватное сообщение}
  if CheckBox1.Checked then
   s := '#P'+ListBox1.Items[ListBox1.ItemIndex]+';' {добавляем спец.команду и адресат}
  else {А если не очень приватное?}
   s := '#M'; {Просто спец.команду}
  {Добавляем наше имя (от кого) и само сообщение}
  s := s+nick+';'+Edit2.Text;
  {Посылаем все это добро по сокету}
  ClientSocket1.Socket.SendText(s);
  {И снова ждем ввода в уже чистом TEdit-е}
  Edit2.Text := '';
  ActiveControl := Edit2;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Width:=640;
Form1.Height:=420;
Form1.Position:=poDesktopCenter;
Form1.AutoSize:=true;

Timer1.Enabled:=false;
t:=InputBox('Соеденение..', 'Введите имя клиента:', ' ');
if t='' then t:='Пользователь'+TimeToStr(time);

end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
  var s,from_,to_: string;
begin
s:=Socket.ReceiveText;
if Copy(s,1,2)='#N' then
 begin Socket.SendText('#N'+t);
   exit;
 end;
 if copy(s,1,2)='#U' then begin
 Delete(s,1,2);
 ListBox1.Items.Clear;
 while Pos (';',s)>0 do begin
 ListBox1.Items.Add(Copy(s,1,Pos(';',s)-1));
 Delete (s,1,Pos(';',s));
 end;
 Exit;
 end;
 {Если нам прислали общее сообщение (видимое для всех юзеров)}
  if Copy(s,1,2) = '#M' then begin
   Delete(s,1,2);
   {Добавляем его в Memo1}
   Memo1.Lines.Insert(0,Copy(s,1,Pos(';',s)-1)+'#N'+'>'+
                        Copy(s,Pos(';',s)+1,Length(s)-Pos(';',s)));
   Exit;
end;
{Если нам прислали запрос на наше имя юзера}
  if Copy(s,1,2) = '#N' then begin
   {Посылаем ответ}
   Socket.SendText('#N'+nick);
   Exit;
  end;
  {Если прислали приватное сообщение }
  if Copy(s,1,2) = '#P' then begin
   Delete(s,1,2);
   {Выделяем в to_ - кому оно предназначено}
   to_ := Copy(s,1,Pos(';',s)-1);
   Delete(s,1,Pos(';',s));
   {Выделяем в from_ - кем отправлено}
   from_ := Copy(s,1,Pos(';',s)-1);
   Delete(s,1,Pos(';',s));
   {Если оно для нас, или написано нами - добавляем в Memo1}
   if (to_ = nick)or(from_ = nick) then
    Memo1.Lines.Insert(0,from_+' (приватное) > '+s);
   Exit;
  end;
end;


procedure TForm1.vremyaTimer(Sender: TObject);
begin
label1.Caption:=TimeToStr(Now);
label3.Caption:=DateToStr(Now);

end;

procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  {Если была нажата Enter (для тех, кто с мышами не дружит) - тоже не
   отказываемся послать сообщение}
  if Key = VK_RETURN then
   Button1.Click;
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  {отсоединились :(}
  Memo1.Lines.Insert(0,'disconnected');
end;

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
If ClientSocket1.Active=False then ClientSocket1.Active:=true;
StatusBar1.Panels.Items[1].Text:='Подключен';
Memo1.Lines.Add('Клиент подключен к серверу '+'['+DateToStr(Date) + ']' +' '+ '[' + TimetoStr(time)+ ']') ;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
ClientSocket1.Active:=False;
StatusBar1.Panels.Items[1].Text:='Отключен';
Memo1.Lines.Add('Клиент откючен от сервера: '+'['+DateToStr(Date) + ']' +' '+ '[' + TimetoStr(time)+ ']') ;
end;

procedure TForm1.N8Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;

procedure TForm1.About1Click(Sender: TObject);
begin
Form2.Showmodal;
end;

procedure TForm1.N9Click(Sender: TObject);
begin
memo1.Lines.SaveToFile('log\log.txt');
end;


procedure TForm1.texttimerTimer(Sender: TObject);
begin
Memo1.Lines.Add('['+DateTostr(Date)+']'+' '+'['+TimeToStr(Date)+']');
texttimer.Enabled:=false;
end;

procedure TForm1.ToolButton4Click(Sender: TObject);
begin
if(FileExists('log\log'+'['+DateToStr(Date)+']'+'.txt')) then begin
MemoBufer.Lines.LoadFromFile('log\log'+'['+DateToStr(Date)+']'+'.txt');
MemoBufer.Lines.Add(Memo1.Text);
MemoBufer.Lines.SaveToFile('log\log'+'['+DateToStr(Date)+']'+'.txt');

end;
end;
end.
Ответить с цитированием
  #15  
Старый 09.11.2010, 10:54
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

Наверное лучше с SaveDialog и не парить мозг
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:04.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025