Имеем 2 переменные с временем к примеру 12:21:15 и 15:26:30 Есть ли готовая функция которая покажет сколько времени осталось от одного до второго?
создаю динамически форму Form1 и пытаюсь отловить нажатие на кнопку ? чтобы вывести сообщение. странно но не работает, хотя если создавать полное приложение - пашет. код программы help: PHP: program help; uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, XPman; type TForm1 = class(TComponent) constructor Create(AOwner: TComponent); override; destructor Destroy; override; private procedure wmNCLButtonDown(var Msg : TWMNCLButtonDown); message WM_NCLBUTTONDOWN; procedure wmNCLButtonUp(var Msg : TWMNCLButtonUp); message WM_NCLBUTTONUP; end; var Form1: TForm; constructor TForm1.Create(AOwner: TComponent); begin inherited; Form1 := TForm(AOwner); with Form1 do begin Caption := 'help button'; Height := 100; Width := 250; Position := poDesktopCenter; BorderStyle := bsDialog; BorderIcons := [biSystemMenu, biHelp]; end; end; destructor TForm1.Destroy; begin inherited; end; procedure TForm1.wmNCLButtonDown(var Msg : TWMNCLButtonDown); begin if Msg.HitTest = HTHELP then begin Msg.Result := 0; end else inherited; end; procedure TForm1.wmNCLButtonUp(var Msg : TWMNCLButtonUp); begin if Msg.HitTest = HTHELP then begin Msg.Result := 0; ShowMessage('сообщение'); end else inherited; end; begin Application.Initialize; Application.CreateForm(TForm, Form1); TForm1.Create(Form1); Application.Run; end.
функции вроде нету) но можно написать: PHP: function DateDiff(d1, d2: string): string; begin Result := TimeToStr(StrToTime(d1) - StrToTime(d2)); end; используем к примеру так: PHP: procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption := DateDiff('12:21:15', '15:26:30'); end; ps: не самое элегантное исполнение
не знаю) недавно начал изучать этот подход. в php тоже просто есть конструктур и диструктор, которые вызываются первей всех и в последнию очередь соотвественно.
вижу вы не работали с help кнопкой. создавать никаких кнопок не нужно. я указал в создании формы - biHelp осталось отловить нажатие на неё. для этого используются 2 процедуры, описанные в private. в обычном варианте, это работает. при динамическом - нет. пример 1: стандартный проект | biHelp работает пример 2: динамическое создание формы | biHelp не работает
проверяй-ка Code: procedure TForm1.wmNCLButtonDown(var Msg : TWMNCLButtonDown); begin if Msg.HitTest = HTHELP then begin Msg.Result := 0; end else inherited; end; procedure Tform1.wmNCLButtonUp(var Msg : TWMNCLButtonUp); begin if Msg.HitTest = HTHELP then begin Msg.Result := 0; ShowMessage('ñîîáùåíèå'); end end; procedure TForm1.Button1Click(Sender: TObject); var f2: TForm1; begin f2 := tform1.Create(application); f2.Caption := 'help button'; f2.Height := 100; f2.Width := 250; f2.Position := poDesktopCenter; f2.BorderStyle := bsDialog; f2.BorderIcons := [biSystemMenu, biHelp]; f2.Show;
Есть такая проблема. Шлю Post запрос, результат запроса идет в Memo1. Теперь собственно суть проблемы: Как сделать так, чтобы при последующем запросе Memo1 не перезагружался, а просто дополнялся следующим результатом запроса
Код в студию... Осмелюсь предположить, что вы используете следующий способ получения кода страницы... PHP: Memo.Text := IdHTTP.Post('http://krivieruki.ru', ParamData); А нужно использовать метод Memo.Lines.Add...
возник ещё вопрос, в Memo висит текст, что-то типо: 123456;qwerty и так очень много раз надо удалить все символы до двоеточия чтобы осталось онли: qwerty
а может лучше подучить основы, тогда подобных вопросов будет меньше. по теме: delete, pos; Циклы: repeat, for, while
1) компилятор сообщает, что константа не может быть передана как параметр-переменная 2) Memo1.Lines - это не тип string Code: procedure Delete([B]var Source: string[/B]; StartChar: Integer; Count: Integer); Code: procedure XYZ(S: TStrings); var i: Integer; sTmp: String; begin for i:= 0 to S.Count - 1 do begin sTmp:= S.Strings[i]; delete(sTmp, 1, pos(':', sTmp)); S.Strings[i]:= sTmp; end; end; ........... XYZ(Memo.Lines) ...........
Code: procedure TForm1.btn1Click(Sender: TObject); var n,i:integer; log, pas: string; pole:variant; Begin n:=mmo1.Lines.Count; for i:= 0 to n-1 do Begin Form1.tmr1.Enabled:=False; log:=copy(Mmo1.Lines[i],1, pos(';',Mmo1.Lines[i])-1); pas:=copy(Mmo1.Lines[i], pos(';',Mmo1.Lines[i])+1, length(Mmo1.Lines[i])); Form1.Wb1.OleObject.Document.getelementbyid('login').Value:=log; Form1.Wb1.OleObject.Document.getelementbyid('passwd').Value:=pas; Form1.tmr1.Enabled:=True; end; end; Значит вот на форме мемо гружу туда список login;pass, через webbrowser пытаюсь авторизоваться на яндексе и не могу нажать на кнопку. У не нет ID. Подскажите как быть? Второй вопрос - как вытащить кусок кода (html) например <b></b>? (без цикла ибо там тегов много. Спасибо большое.
Code: uses StrUtils; function parse(str, str2, ob: string): string; var res, s1, s2: string; begin s1 := Copy(ob, pos(str, ob) + length(str), length(ob)); s2 := Copy(s1, 1, pos(str2, s1) - 1); result := s2; end; string := parse('<b>', '</b>', string);
Имеем StringGrid с 3 колонками. Всего около 300 строк. В первой колонке имя оно не изменяется. Во второй фамилия. И в третей которая изменяется время до определенного момента в часах:минутах:секундах, то есть оно каждую секунду отсчитывается в обратную сторону. Задача сделать сортировку по 3 колонке чтобы первым стояло значение которое ближе всего к нужной дате. К примеру есть 3 строки в них 1)0:24:54 2)27:13:43 3)0:26:34 Задача выстроить все колонки исходя из времени то есть чтобы было. 1)0:24:54 2)0:26:34 3)27:13:43