![]() |
Anfängerprobleme
hi jungs
ich wollte mit meinen sehr beschränkten delphi-kenntnissen versuchen ein programm zu schreiben was über verschiedene buttons und ein edit-feld wörter zusammenstellen kann. auf den buttons liegt die abkürzung für eine farbe (zb '^1' -> rote farbe für alle nachfolgenden buchstaben oder zahlen.) Die ausgabe soll in einem label oder so stattfinden und auch schon das richtige farbschema enthalten. Also '^1Hallo^2Leute' würde im label als '{rotes}Hallo{und grünes}Leute' angezeigt(die farbkürzel sollen dabei im label verschwinden). Außerdem soll die länge des im editfeld eingegebenen wortes überprüft werden und bei einer gewissen anzahl von zeichen verschieden gestaffelte labels von grün auf rot springen lassen.(zb mehr als 18 zeichen: label_1.color:= clRed;) allerdings hab ich außer dem interface und den farb-buttons die die kürzel in das editfeld einfügen noch kein script und auch die aktualisierung der zeichenanzahl mit den rot/grünen labels funktioniert nicht so wie ich mit das vorstelle. (xD) ich bräuchte etwas grundlagenhilfe da ich nicht genau weiß wie ich eigene prozeduren schreibe die zb eine getimte aktualisierung ermöglichen.. (zb alle 0,5 sekunden oder so die anzahl der im editfeld eingegebenen zeichen überprüft und die labelfarbe dementsprechend setzt...) danke im voraus |
Re: Anfängerprobleme
Also die Länge eines Editfelds einhälts du über Edit1.Text.Length.
|
Aussagekräftiger Titel
Bitte gib deinem Beitrag einen aussagekräftigen Titel. Der jetzige Titel lässt nicht erkennen, um was für ein Problem oder Frage es sich handelt. Um den Titel zu ändern, editiere einfach deinen ersten Beitrag. Damit erleichters du das Auffinden deines Beitrages mit der Suche und ersparst anderen Mitglieder ein unnötiges Öffnen deines Beitrages.
|
Re: Anfängerprobleme
Zitat:
Delphi-Quellcode:
var
cnt: Integer; begin cnt := Length(Edit1.Text); end; |
Re: Anfängerprobleme
Zitat:
|
Re: Anfängerprobleme
fürs timing gibt es eine komponente ttimer mit intervallangabe etc.
in dessen procedure kannst du abläufe in regelmäßigen abständen laufen lassen zb
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); //hier kannst du auch eigene procedure oder function definieren procedure machwas; function machwasneues:string; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; i:integer; implementation {$R *.dfm} procedure tform1.machwas; begin showmessage('habe etwas gemacht'); end; function tform1.machwasneues:string; begin showmessage('habe etwas neues gemacht'); result:='fertig'; end; procedure TForm1.FormCreate(Sender: TObject); begin timer1.Enabled:=false; timer1.Interval:=10; i:=0; end; procedure TForm1.Button1Click(Sender: TObject); begin i:=0; timer1.Enabled:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin machwas; memo1.lines.add(machwasneues); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if i<=20 then begin memo1.Lines.add(inttostr(i)); //inttostr für ganze zahlen - Ausgabe //floattostr für kommazahlen - ausgabe i:=i+1; end else timer1.Enabled:=false; end; end. so ich habe dir noch zwei beispiele für funktionen(mit rückgabewert) und prozeduren(ohne rückgabewert) gegeben, sie werden alle nach dem selben schema benutzt (deklariert und aufgerufen). wie du siehst zeigen die punkte hinter bezeichnern weitere optionen an. bsp komponente: timer1 weiterer befehl: enabled verbindung der beiden:
Delphi-Quellcode:
timer1.enabled:=true;//oder false;
|
Re: Anfängerprobleme
cool danke das klappt soweit. aber jetzt hänge ich den der darstellung des farbigen namens in dem label. ich habe keinen wirklich ansatz :( . vielleicht könntet ihr mir nochmal helfen :o)
|
Re: Anfängerprobleme
Du kannst deinen neuen Text einfach mit einer Schleife durchsuchen und dann sobald ein ^ auftritt die nachfolgende Zahl herausfinden und dann den Rest des Textes bis zu einem ^ mit der vordefinierten Farbe färben. Achtung: Soviel ich weiß, wird die Schriftfarbe in einem Label oder Editfeld immer für das gesamte Feld gesetzt, du kannst also nicht zwei verschiedene Farben dort drin haben. Bei einem Memo geht das glaube ich auch nicht und bei einem RichEditFeld?
Bisschen Code zur Anregung:
Delphi-Quellcode:
So in etwa könnte man das machen. Natürlich muss dann noch in den Quelltext rein, dass das Hochzeichen und die darauf folgende Zahl gelöscht wird. Und du musst mit irgendeiner Komponente arbeiten, in der man verschiedenfarbigen Text darstellen kann. Obiger Code ist natürlich nur ein Beispiel, du musst in noch auf die Komponente anpassen.
var Farbe: TColor;
begin Farbe := clBlack; //Standartfarbe for I := 0 to Length(Edit1) do if Edit1.Text[I] = '^' then begin if Edit1.Text [I+1] = '1' then begin Farbe := clBack; if Edit1.Text [I+1] = '2' then Farbe := clRed; end else Edit1.Text[I].Color := Farbe; end; |
Re: Anfängerprobleme
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 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