![]() |
|
#1
|
|||
|
|||
![]() 1.Как сделать чтобы текст из выпадающего списка при нажатии попадал в едит?
2. Реально ли в чате по локальной сети использовать смайлики-картинки? Спасибо ![]() |
#2
|
||||
|
||||
![]() Цитата:
Код:
edit1.Text:=combobox1.Text; Цитата:
Да возможно! смайлики грузишь на все компы которых установлен твой чат дописывать программу - каждому смалику присвоить какой нить код к примеру :-) Нет ничего не возможного. Вопрос только во времени... |
#3
|
|||
|
|||
![]() Electronic_Arts, Спасибо за ответ, но Я имею ввиду нажал на одну строчку он вставился в эдит, как это сделать?) А по второму вопросу есть что почитать, или может сможешь обьяснить в краце?) |
#4
|
||||
|
||||
![]() Я же указал уже наверху
вот так это делается - присваиваем Едиту - выбранное значение из Комбо Код:
edit1.Text:=combobox1.Text; А насчет второго вопроса - я никогда не писал чаты - я просто технологию знаю как смайлик отображается на чате... Нет ничего не возможного. Вопрос только во времени... |
#5
|
||||
|
||||
![]() Код:
edit1.Text:=comboxox1.Items[ComboBox1.ItemIndex]; Помогаю за Спасибо ![]() |
#6
|
|||
|
|||
![]() Цитата:
Спасибо ![]() есть еще один вопросик Код:
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
|
||||
|
||||
![]() Если ты хочешь работать именно с мемо, то можно так:
Код:
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
|
|||
|
|||
![]() Цитата:
MemoBufer - ошибку выдает ![]() |
#9
|
||||
|
||||
![]() Цитата:
Нет ничего не возможного. Вопрос только во времени... |
#10
|
|||
|
|||
![]() да нее не то все, теперь он вообще не сохраняет
![]() |
#11
|
||||
|
||||
![]() Смотри, объясню еще раз:
если ты пытаешься сохранить мемо и там вдруг на эту дату уже есть файл, значит нам надо дописать в этот файл еще что-то. Для этого создаем еще одно мемо (невидимое, visible:=false), или вообще создаем переменную S: TStringList; И при сохранении, если файл с сегодняшней датой уже есть, то мы берем этот буфер (дополнительное мемо), загружаем в него весь файл (который есть сейчас на диске), и дописываем туда то, что ты хотел добавить, после этого просто перезаписываем файл с сегодняшней датой. В результате чего файл будет не заменен на новый, а дописан. Помогаю за Спасибо ![]() |
#12
|
|||
|
|||
![]() Ну не добовляет он новых строк, мало того он их теперь вообще не добовляет
![]() |
#13
|
||||
|
||||
![]() Тут надо понять то, что ты хочешь сделать. Если понял - теперь подумай, почему он может не работать, я ж твоего кода не вижу, или покажи код.
Помогаю за Спасибо ![]() |
#14
|
|||
|
|||
![]() Держи:
Код:
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
|
|||
|
|||
![]() Наверное лучше с SaveDialog и не парить мозг
|