AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paintbox1.Canvas.TextOut

Ein Thema von KOTRET · begonnen am 30. Mai 2005 · letzter Beitrag vom 4. Jun 2005
Antwort Antwort
KOTRET

Registriert seit: 25. Mai 2005
5 Beiträge
 
#1

Paintbox1.Canvas.TextOut

  Alt 30. Mai 2005, 23:31
Hi Leute!

Folgendes Problem: Auf Knopfdruck soll eine Paintbox (bereits mit einer Skala und Hilfslinien versehen) mit passenden Werten an den Achsen beschriftet werden. Das dumme ist, dass dies erst passiert (zumindest optisch), wenn man den Button 2 mal drückt, beim ersten Mal tut sich einfach nix...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

const g=9.81;
var hoehe,xt,t,v:Real;
 n:Integer;
 sknum:string;

begin
 hoehe:=StrToFloat(Edit1.text);
 v:=StrToFloat(Edit2.text);

 t:=sqrt(2*hoehe/g); // Flugzeit
 xt:=v*t; // Flugweite

// yt:=(-g/2)*sqr(t))+hoehe;

for n:=1 to 11 do
begin
 if xt<11 then sknum:=FloatToStrF(((xt/510)*(n*45)),ffFixed,1,1);
 if xt<1 then sknum:=FloatToStrF(((xt/510)*(n*45)),ffFixed,1,2)
 else sknum:=FloatToStr(round((xt/510)*(n*45)));
Form1.Paintbox1.Canvas.TextOut((n*45+30)-8,332,sknum);
end;

Label5.caption:='Flugweite: '+FloatToStr(xt)+' m';
Label8.Caption:='Flugzeit: '+FloatToStr(t)+' s';

end;
Findet hier irgendjemand nen Grund warum das so ist?

Die Paintbox wird gleich beim Start des Programms gezeichnet, die Werte aber erst auf Knopfdruck ausgegeben (solln sich nach den eingetippten Werten (hoehe und v) richten

Gruß, KOTRET
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Paintbox1.Canvas.TextOut

  Alt 31. Mai 2005, 02:17
probiers mal mit paintbox.repaint;
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Paintbox1.Canvas.TextOut

  Alt 31. Mai 2005, 04:43
Also bei mir werden die Werte sofort ausgegeben.

Kleiner Tipp: Zeichne auf ein Bitmap im Speicher und kopier es bei Bedarf auf den Canvas der Paintbox. Etwas komplexes Beispiel: http://www.luckie-online.de/Delphi/Programme/ -> SchrägerWurf (Und alles sauber in eine Klasse gepackt.)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Paintbox1.Canvas.TextOut

  Alt 31. Mai 2005, 05:29
Zitat von Luckie:
komplexes Beispiel: http://www.luckie-online.de/Delphi/Programme/ -> SchrägerWurf
Bei mir kommt ein " '9,81' ist kein gültiger Gleitkommawert. " bei Klick auf Zeichnen.
Das liegt daran, dass bei mir im System das Dezimaltrennzeichen ein Punkt ist und kein Komma.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Paintbox1.Canvas.TextOut

  Alt 31. Mai 2005, 05:37
Hmpf. War ja nur eine Demo und dafür gedacht etwas mit Klassen zu arbeiten. Jetzt sollte es gehen. Eingeben kannst du dort sowieso nur den eingestellten Dezimalseparator.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
KOTRET

Registriert seit: 25. Mai 2005
5 Beiträge
 
#6

Re: Paintbox1.Canvas.TextOut

  Alt 1. Jun 2005, 19:25
ich wills nicht allzu komlex machen, bin nur Anfänger bei paintbox1.repaint werden die Werte garnicht angezeigt, wenn ich das Repaint als letzte Aktion vorm end; mache, wenn ichs an den Anfang der Procedure stelle ists der gleiche Fall wie vorher...
mhm, wenns bei euch gehen sollte, ist dann vielleicht ne Einstellung am Compiler oder direkt in Delphi schuld?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Paintbox1.Canvas.TextOut

  Alt 1. Jun 2005, 19:29
Bei Paintbox war es doch so, das man das OnPaint Ereignis überschreiben muss, damit da was gezeichnet wird.
Nimm anstelle einer Paintbox doch einfach ein TPanel. Das hat auch ein Canvas.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
KOTRET

Registriert seit: 25. Mai 2005
5 Beiträge
 
#8

Re: Paintbox1.Canvas.TextOut

  Alt 4. Jun 2005, 15:20
hab den Fehler gefunden:
sobald sich was in der Paintbox ändert, tritt OnPaint inkraft. In der Form1.OnPaint-Routine hatte ich reingeschrieben, dass ein Rechteck weiß gezeichnet werden soll, danach kamen die Hilfslinien für das Diagramm. Also wurde die Skala "übermalt". Wieso die aber bei 2maligem drücken dann wieder sichtbar war ist mir nen Rätsel

hab jetzt einfach nen weißen Hintergrund statt rect genommen ^^
Danke für alle Lösungsvorschläge
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz