![]() |
AW: Edit Text ausblenden ?
Liste der Anhänge anzeigen (Anzahl: 1)
|
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:
) und dann:
Align := alTop
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:
stellt (aktuell) zwei Eigenschaften zur Verfügung
THangmanPainter
Delphi-Quellcode:
und
CharCount
Delphi-Quellcode:
und darüber stellt man dann die Anzahl der Buchstaben ein und an welcher Stelle welcher Buchstabe angezeigt werden soll.
Chars[Index]
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. |
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? |
AW: Edit Text ausblenden ?
Zitat:
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. |
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