Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > часы в заголовок


Автор: semas 31.7.2007, 13:16
Как можно вывести в текущую время и дату в заголовок окна? 
так чтоб оно постоянно обновлялось 

Автор: dumb 31.7.2007, 13:37
кидаешь на форму Timer с закладки System. дабл-клик по нему. и пишешь:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
const
{$J+}
  OrgCaption: String = '';
begin
  if OrgCaption = '' then OrgCaption := Caption;
  Caption := OrgCaption + ' - Now ' + FormatDateTime('hh:nn:ss', Now);
end;

Автор: Yanis 31.7.2007, 14:07
Цитата(dumb @  31.7.2007,  14:37 Найти цитируемый пост)
{$J+}

А почему не просто var?

Автор: dumb 31.7.2007, 14:47
Цитата(Yanis @  31.7.2007,  14:07 Найти цитируемый пост)
А почему не просто var?

так это... а как ты в локальной переменной сохранишь начальное значение Caption?

Автор: W1zArD 31.7.2007, 20:59
не проще-ли будет...  smile 

в таймере

Код

Caption:=Format('%s', DateTimeToStr(now)); 

Автор: TForumUser 31.7.2007, 21:18
There is no overloaded version of 'format' that can be called with these arguments

Автор: W1zArD 1.8.2007, 01:40
Код

Caption:=Format('%s', [DateTimeToStr(now)]); 

Автор: TForumUser 1.8.2007, 12:50
В твоем случае оригинальное имя формы затирается и вместо него пишется текущая дата/время.

Автор: Guedda 1.8.2007, 13:14
Цитата(TForumUser @  1.8.2007,  13:50 Найти цитируемый пост)
В твоем случае оригинальное имя формы затирается и вместо него пишется текущая дата/время.

Код

Caption:= Caption + Format('%s', [DateTimeToStr(now)]); 

Автор: dumb 1.8.2007, 13:38
Guedda, так у тебя скоро станет очень-очень длинный заголовок... smile

Автор: Rennigth 1.8.2007, 14:47
dumb, 
Код

const
{$J+}
  OrgCaption: String = '';

не знал о такой хитрости smile
Как я понял память под такую "переменную" резервируется один раз? а где? Если объект порушить память освободиться? Вообщем можно ли это использовать как static переменную? хотя врятли...

З.Ы. что это я? Ща проверим  smile 

Автор: Rennigth 1.8.2007, 15:02
Гы... можно вот так считать количество созданных объектов(хотя есть и другие способы...), но все же приятно smile
Код

unit Unit10;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Types;

type
  TForm10 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

  TSomeObject = class(TObject)
  private
  {$J+}
  const
    C_ObjCount: Integer = 0;
  public
    constructor Create;
    destructor Destroy; override;

    class function ObjCount: Integer;
  end;

var
  Form10: TForm10;

implementation

{$R *.dfm}

procedure TForm10.FormCreate(Sender: TObject);
var
  i: Integer;
  lList: TList;
begin
  ShowMessage(IntToStr(TSomeObject.ObjCount));

  lList := TList.Create;
  try
    for i := 0 to 9 do
      lList.Add(TSomeObject.Create);

    ShowMessage(IntToStr(TSomeObject.ObjCount));

    for i := 0 to 9 do
      TObject(lList.Items[i]).Free;

    lList.Clear;
  finally
    lList.Free;
  end;

  ShowMessage(IntToStr(TSomeObject.ObjCount));
end;

{ TSomeObject }

constructor TSomeObject.Create;
begin
  Inc(C_ObjCount);
end;

destructor TSomeObject.Destroy;
begin
  Dec(C_ObjCount);
  inherited;
end;

class function TSomeObject.ObjCount: Integer;
begin
  Result := C_ObjCount;
end;

end.

Автор: MetalFan 1.8.2007, 15:53
Борланды не рекомендуют использовать такой способ
Цитата(BDS Help)
In early versions of Delphi and Borland Pascal, typed constants were always writeable, corresponding to the {$J+} state. Old source code that uses writeable typed constants must be compiled in the {$J+} state, but for new applications it is recommended that you use initialized variables and compile your code in the {$J-} state

Автор: dumb 1.8.2007, 16:05
Цитата(MetalFan @  1.8.2007,  15:53 Найти цитируемый пост)
Борланды не рекомендуют использовать такой способ
я вот, кстати, видел этот нотайс, и не понял - они призывают просто забыть о такой удобной фишке и тупо пользоваться глобальными переменными или есть какая-то модная замена?

Автор: MetalFan 1.8.2007, 16:15
Цитата(W1zArD @  1.8.2007,  01:40 Найти цитируемый пост)
    
Caption:=Format('%s', [DateTimeToStr(now)]); 

скажите, а на кой тут format? для "красоты"?

Добавлено через 43 секунды
Цитата(dumb @  1.8.2007,  16:05 Найти цитируемый пост)
они призывают просто забыть о такой удобной фишке

имхо константа на то и константа, чтобы не изменяться в ходе выполнения программы.

Автор: dumb 1.8.2007, 18:23
Цитата(MetalFan @  1.8.2007,  16:15 Найти цитируемый пост)
имхо константа на то и константа, чтобы не изменяться в ходе выполнения программы.
ну по сути то это ж была "глобальная" переменная с локальной областью видимости и начальным значением. если б они просто перенесли такую фишку в var(как это сделали с глобальными переменными), чтобы избежать смысловой неоднозначности - ладно, но они то просто убрали(хорошо хоть не совсем)... либо я чего-то не понимаю, либо просто чего-то не знаю. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)