Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Edit Text ausblenden ? (https://www.delphipraxis.net/173868-edit-text-ausblenden.html)

Davidlocke13 21. Mär 2013 15:08

AW: Edit Text ausblenden ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mein Projekt

Anhang 38782

oder eher Müll

Sir Rufo 21. Mär 2013 16:00

AW: Edit Text ausblenden ?
 
Nur mal so zum Spaß eine (sehr einfache) Hangman-Painter-Componente, die man so benutzt:
Eine PaintBox auf die Form klatschen (irgendwie noch
Delphi-Quellcode:
Align := alTop
) und dann:

Delphi-Quellcode:
uses
  HangManPainter,
  ...;

type
  TForm1 = class( TForm )
    PaintBox1 : TPaintBox;
    procedure FormCreate( Sender : TObject );
  private
    FPainter : THangManPainter;
  end;

procedure TForm1.FormCreate( Sender : TObject );
begin
  FPainter := THangManPainter.Create( PaintBox1 );
end;
Delphi-Quellcode:
THangmanPainter
stellt (aktuell) zwei Eigenschaften zur Verfügung
Delphi-Quellcode:
CharCount
und
Delphi-Quellcode:
Chars[Index]
und darüber stellt man dann die Anzahl der Buchstaben ein und an welcher Stelle welcher Buchstabe angezeigt werden soll.

Das Spiel selber steuert das dann ganz simpel über diese beiden Eigenschaften.

Das weitere Aufhübschen überlasse ich dir dann mal ;)
Delphi-Quellcode:
unit HangManPainter;

interface

uses
  Classes, ExtCtrls;

type
  THangManPainter = class( TComponent )
  private
    FPaintBox : TPaintBox;
    FCharCount : Integer;
    FChars :    array of Char;
    procedure SetCharCount( const Value : Integer );
    function GetChars( const index : Integer ) : Char;
    procedure SetChars( const index : Integer; const Value : Char );
    function GetCharCount : Integer;
  protected
    procedure OnPaint( Sender : TObject );
  public
    constructor Create( APaintBox : TPaintBox ); reintroduce;

    property CharCount : Integer read GetCharCount write SetCharCount;
    property Chars[const index : Integer] : Char read GetChars write SetChars;

  end;

implementation

uses
  Math, Graphics, Types;

{ THangManPainter }

constructor THangManPainter.Create( APaintBox : TPaintBox );
begin
  inherited Create( APaintBox );
  FPaintBox        := APaintBox;
  FPaintBox.OnPaint := OnPaint;
end;

function THangManPainter.GetCharCount : Integer;
begin
  Result := High( FChars ) - Low( FChars ) + 1;
end;

function THangManPainter.GetChars( const index : Integer ) : Char;
begin
  Result := FChars[Index];
end;

procedure THangManPainter.OnPaint( Sender : TObject );
var
  LIdx :   Integer;
  LCanvas : TCanvas;
  LRect :  TRect;
  LText :  string;
begin
  if CharCount <= 0
  then
    Exit;

  LCanvas := FPaintBox.Canvas;

  LCanvas.Brush.Style := bsSolid;
  LCanvas.Pen.Color  := clBlack;
  LCanvas.Pen.Width  := 4;
  LCanvas.Pen.Style  := psSolid;

  LCanvas.Font.Height := 30;

  for LIdx := 0 to Pred( CharCount ) do
    begin

      if FChars[LIdx] = #0
      then
        LCanvas.Brush.Color := clWhite
      else
        LCanvas.Brush.Color := clYellow;

      LRect.Left  := 50 * LIdx + 30;
      LRect.Top   := 30;
      LRect.Width := 30;
      LRect.Height := 50;
      LCanvas.RoundRect( LRect, 5, 5 );

      InflateRect( LRect, - 3, - 3 );

      LText := FChars[LIdx];
      LCanvas.TextRect( LRect, LText, [tfCenter, tfSingleLine, tfVerticalCenter] );
      // LCanvas.TextRect( LRect, LText );
    end;
end;

procedure THangManPainter.SetCharCount( const Value : Integer );
begin
  SetLength( FChars, Value );
  FPaintBox.Invalidate;
end;

procedure THangManPainter.SetChars( const index : Integer; const Value : Char );
begin
  FChars[Index] := Value;
  FPaintBox.Invalidate;
end;

end.

Furtbichler 21. Mär 2013 19:45

AW: Edit Text ausblenden ?
 
Wie jetzt? Ich habe ein geheimes Wort 'Halmackenreuther'.
Anfangs wird das so dargestellt '________________'
Und wenn man z.B. 'e' vorschlägt, soll dastehen '_______e__e___e_'. Oder wie?

Wie wäre es dann mit einem TLabel? Und nach jedem Buchstaben, der richtig geraten wird, 'berechnet' man einfach die Caption vom Label neu.

Oder bin ich zu debil, das zu begreifen?

Sir Rufo 21. Mär 2013 19:49

AW: Edit Text ausblenden ?
 
Zitat:

Zitat von Furtbichler (Beitrag 1208309)
Oder bin ich zu debil, das zu begreifen?

Das kann ich nicht beurteilen :mrgreen:

Aber der TE möchte wohl etwas grafisch Anspruchsvolleres haben (darum diese TEdit-Orgie).


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz