Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7570485
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T15:26:18+00:00 2026-05-30T15:26:18+00:00

I am pretty new to delphi , and would like to start with something

  • 0

I am pretty new to delphi , and would like to start with something easy .
Could someone please show me an example how to make a Digital clock that will transfer the “time” ( hour , min , sec ) to a label ? Or something like that

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T15:26:19+00:00Added an answer on May 30, 2026 at 3:26 pm

    Exercise 1

    Drop a TLabel and a TButton on your form.

    Double-click the button, and write

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Label1.Caption := TimeToStr(Time);
    end;
    

    Exercise 2

    To get the time to update automatically, add a TTimer to your form, and double-click it (you can remove the button if you like). Then write

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Label1.Caption := TimeToStr(Time);
    end;
    

    This code will run once a second (the default interval for a TTimer, which is perfect for us, so we do not need to change it).

    Exercise 3

    To make the clock more annoying, you can try this: in the interface of your form, add a private field called FHighlight, like this:

    TForm1 = class(TForm)
      Button1: TButton;
      Label1: TLabel;
      Timer1: TTimer;
      procedure Button1Click(Sender: TObject);
      procedure Timer1Timer(Sender: TObject);
    private
      { Private declarations }
      FHighlight: boolean;
    public
      { Public declarations }
    end;
    

    Now you can do

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Label1.Caption := TimeToStr(Time);
      if FHighlight then
      begin
        Label1.Color := clWhite;
        Label1.Font.Color := clBlack;
      end
      else
      begin
        Label1.Color := clBlack;
        Label1.Font.Color := clWhite;
      end;
      FHighlight := not FHighlight;
    end;
    

    In order for this effect to work, you need to change one of the properties of the TLabel control (design-time). Change Transparent to false, using the Object Inspector, if it isn’t already.

    Update (Exercise 4)

    Since Warren P thinks it is too boring with a plain TLabel, this is how you can achieve a ‘true’ seven-segment digital clock:

    procedure TForm1.FormPaint(Sender: TObject);
    type
      TDigitData = array[0..6] of boolean;
      TPhysDigit = array[0..7] of TRect;
    const
      DIGIT: array[0..9] of TDigitData =
        (
          (true, true, true, true, true, true, false),
          (false, true, true, false, false, false, false),
          (true, true, false, true, true, false, true),
          (true, true, true, true, false, false, true),
          (false, true, true, false, false, true, true),
          (true, false, true, true, false, true, true),
          (true, false, true, true, true, true, true),
          (true, true, true, false, false, false, false),
          (true, true, true, true, true, true, true),
          (true, true, true, true, false, true, true)
        );
    var
      PaddingW,
      PaddingH,
      UnitX,
      UnitY,
      DigitWidth,
      DigitHeight,
      BarLengthX,
      BarLengthY,
      DigitSeparation,
      FieldSeparation: integer;
      SEGMENTS: array[0..5] of TPhysDigit;
      i: Integer;
    
      function TranslatePhysDigit(const PhysDigit: TPhysDigit; const DX: integer; const DY: integer = 0): TPhysDigit;
      var
        i: Integer;
      begin
        for i := 0 to 7 do
        begin
          result[i].Left := PhysDigit[i].Left + DX;
          result[i].Right := PhysDigit[i].Right + DX;
          result[i].Top := PhysDigit[i].Top + DY;
          result[i].Bottom := PhysDigit[i].Bottom + DY;
        end;
      end;
    
      procedure DrawDigit(const Position, Value: integer);
      var
        i: integer;
      begin
        for i := 0 to 6 do
          if DIGIT[Value, i] then
            Canvas.FillRect(SEGMENTS[Position, i]);
      end;
    
      procedure DrawColon(const Position: integer);
      var
        ColonRect1: TRect;
        ColonRect2: TRect;
      begin
        ColonRect1 := Rect(PaddingW + Position*UnitX, PaddingH + UnitY,
          PaddingW + (Position+1)*UnitX, PaddingH + 2*UnitY);
        ColonRect2 := Rect(PaddingW + Position*UnitX, PaddingH + 3*UnitY,
          PaddingW + (Position+1)*UnitX, PaddingH + 4*UnitY);
        Canvas.FillRect(ColonRect1);
        Canvas.FillRect(ColonRect2);
      end;
    
    var
      t: string;
    
    begin
      PaddingW := Width div 20;
      PaddingH := Height div 20;
      UnitX := (ClientWidth - 2*PaddingW) div 27;
      UnitY := (ClientHeight - 2*PaddingH) div 5;
      DigitWidth := 3*UnitX;
      DigitHeight := 5*UnitY;
      BarLengthX := 3*UnitX;
      BarLengthY := 3*UnitY;
      DigitSeparation := 4*UnitX;
      FieldSeparation := 6*UnitX;
      SEGMENTS[0, 0] := Rect(0, 0, DigitWidth, UnitY);
      SEGMENTS[0, 1] := Rect(DigitWidth - UnitX, 0, DigitWidth, BarLengthY);
      SEGMENTS[0, 2] := Rect(DigitWidth - UnitX, 2*UnitY, DigitWidth, DigitHeight);
      SEGMENTS[0, 3] := Rect(0, DigitHeight - UnitY, DigitWidth, DigitHeight);
      SEGMENTS[0, 4] := Rect(0, 2*UnitY, UnitX, DigitHeight);
      SEGMENTS[0, 5] := Rect(0, 0, UnitX, BarLengthY);
      SEGMENTS[0, 6] := Rect(0, 2*UnitY, DigitWidth, 3*UnitY);
      SEGMENTS[0] := TranslatePhysDigit(SEGMENTS[0], PaddingW, PaddingH);
      SEGMENTS[1] := TranslatePhysDigit(SEGMENTS[0], DigitSeparation);
      SEGMENTS[2] := TranslatePhysDigit(SEGMENTS[1], FieldSeparation);
      SEGMENTS[3] := TranslatePhysDigit(SEGMENTS[2], DigitSeparation);
      SEGMENTS[4] := TranslatePhysDigit(SEGMENTS[3], FieldSeparation);
      SEGMENTS[5] := TranslatePhysDigit(SEGMENTS[4], DigitSeparation);
      Canvas.Brush.Color := clBlack;
      Canvas.FillRect(ClientRect);
      Canvas.Brush.Color := clBlack;
      Canvas.FillRect(Rect(PaddingW, PaddingH, ClientWidth - PaddingW,
        ClientHeight - PaddingH));
      Canvas.Brush.Color := clRed;
      t := FormatDateTime('hhnnss', Time);
    
      for i := 0 to 5 do
        DrawDigit(i, StrToInt(Copy(t, i+1, 1)));
    
      if odd(StrToInt(Copy(t, 6, 1))) then
      begin
        DrawColon(8);
        DrawColon(18);
      end;
    end;
    
    procedure TForm1.FormResize(Sender: TObject);
    begin
      Invalidate;
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Invalidate;
    end;
    

    Seven-segment digital clock

    Playing with the GDI brushes:

    Seven-segment digital clock

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am pretty new to cocos2d. Could someone please direct me to a good
I pretty new to js and jquery so please bear with me. I'd like
I'm pretty new to c# and I'm trying to make a function that checks
I'm pretty new to Delphi and I'm trying to use the DEHL Collections library.
Pretty new to C#, and I'd like to know how should I be using
I'm pretty new to Delphi even though I used to use it many years
Pretty new to C# (and I would describe myself as a beginner in programming,
I'm pretty new to Core Data and managed to get the NSTableView to show
Im pretty new to Java Web Services, but I cant find a good explanation
I pretty new to Objective-C (and C itself) and need to consume a NSData

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.