Zeichnen in TCustomEdit

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Naja, meine GUI hat ja auch andere ziele, darum ist sie ja auch einfacher gehalten.

Aber wir reden hier doch nur um ein TEdit. mehr doch nicht.
Zuletzt geändert von pluto am So 20. Mai 2007, 18:11, insgesamt 1-mal geändert.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Wenn du das so siehst kann ich dir auch nicht weiter Helfen.
Aber wir reden doch hier nur um ein TEdit und nicht um ein TMemo oder sonst was. das gibt es Unterschiede.

Und das mit den Objekten ist nicht so sehr speicher fressend wie du meinst.
Und wenn schon. So machen das nun mal alle. Da bin ich mir zimlich sicher.
Wie viel Text möchtes du denn Darstellen in deinem Tedit ?
1000 Zeichen ?
dort werden doch höchsten 20, gut sagen wir 100 Zeichen Dargestellt.
mehr doch nicht. Und das mit Pointer geht es ziemlich schnell, weil es ja kein array !

edit:
meine GUI sieht so aus, und alles was du das siehst geht

mal ein Paar Beispiele:

Code: Alles auswählen

myListBox:=TMyListBox.Create;
//  myListBox.onDraw:=@Flip1;
  myListBox.rx:=10;
  myListBox.ry:=10;
  myListBox.Style:=1;
 
  MyListbox.Brush.color:=clRed;
  MyListbox.Pen.color:=clYellow;
  MyListbox.Font.color:=clAqua;
 
  // Damit nicht bein jedem Hinzufügen gezeichnet wird
  MyListbox.AutoAddDraw:=False;
 
  // Test
  ListItem:=TMyListItem.Create;
  ListItem.Visible:=True;
  ListItem.Caption:='Test ';
  myListBox.AddItem(ListItem);
  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  // Test A
  ListItem:=TMyListItem.Create;
  ListItem.Visible:=True;
  ListItem.Caption:='Test A';
  myListBox.AddItem(ListItem);
  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  // Test 2
  ListItem:=TMyListItem.Create;
  ListItem.Visible:=True;
  ListItem.Caption:='Test 2';
  myListBox.AddItem(ListItem);
  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  // Test 3
  ListItem:=TMyListItem.Create;
  ListItem.Visible:=True;
  ListItem.Caption:='Test 3';
  ListItem.Style.Brush.Color:=clLime;
  ListItem.Style.Font.Color:=clRed;
  ListItem.Style.Pen.Color:=clYellow;
  myListBox.AddItem(ListItem);
  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  // Test 4
  ListItem:=TMyListItem.Create;
  ListItem.Visible:=True;
  ListItem.Caption:='Test 4';
  ListItem.Style.Brush.Color:=clBlue;
  ListItem.Style.Font.Color:=clYellow;
  myListBox.AddItem(ListItem);
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
  // Jetzt sind wir fertig, also zeichne einmal komplet alles
  MyListbox.AutoAddDraw:=True;
// --------------------------------------------------------
  myLabel:=TmyLabel.Create;
  myLabel.Name:='Label1';
  myLabel.rx:=10; myLabel.ry:=400;
  myLabel.Caption:='Dies ist ein Text, oder auch nicht !';
  myLabel.Brush.color:=clLime;
  myLabel.Font.Color:=clRed;
es gibt einige besonderheiten bei zusammengesetzten Komponenten wie z.b. eine Checkbox und einer Radiobox. Die besteht aus einem TmyLabel und jeweils einem TmyCheckRec.
jetzt kann man z.b. über Tmylabel.brush.color:=clred; beide Komponenten auf Rot setzten.
und über TMylabel.Text.brush.color:=clBlue; halt nur den Text.

Ich habe bald vor, die GUI zu veröffentlichen, sie kann aber nur die Grundfunktionen.
und es sind auch nur die "leichten" Komponenten mit dabei wie z.b.
- MyLabel
- MyCheckbox
- MyRadiobox mit Gruppen Funktion
- MyProssesbar
- MyStatusbar(ist eigentlich eine TmyListbox nur mit einem andern style)
- MyButton

und weitere werden folgen:
- MyTracbar
- MyShape
- MyPopupMenu
-----
und dann die aufwendigeren
- MyTedit
- MyEditor
- MyMemo(soll von myEditor abgeleitet sein)
- MyRichEdit(genau so)

wobei das my später wahrscheinlich in Pluto geändert wird.

Ich denke mal ich habe diesmal richtig angefangen.
sonst habe ich immer mit den schweren Komponenten angefangen. und das Klappte nie, weil ich nie Fertig wurde.
Dateianhänge
Bildschirmfoto-Form1.png
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

1. Ich versteh den Sinn nicht.
2. Schaut grausig aus sorry.
3. Wer soll das jemals wozu nutzen ?

Und nun zu deinen Objekts geschichten. Wir reden hier in meinem Fall von Formen wo durchaus mal 50 Edits drauf sind. Hast du auch nur die leiseste Ahnung was das mit deinen Zeichenmethoden bedeutet ? Da kannst du beim Zeichnen zuschauen und Eingaben dürften auch recht schwer werden.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

was glaubst du denn wir ich zeichne ?
Es müssten auch viele mengen an Komponenten unterstützt werden, aber wenn du so viele hast, is es mit Sicherheit ein Desinger Fehler.

Dafür würde ich eine StringGird nehmen.
Dort kannst du auch rein Zeichnen, wie du möchtes !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Pluto in dem Thread gabs mal ein Thema.
Und nein es ist mit Sicherheit kein Fehler und ich kann kein Stringgrid nehmen.
Hast du ne ahnung wie viele Eingaben nötig sein können für ne komplexe Leistungsberechnung z.b. ? Und ich kann da kein StringGrid nehmen.
Zähl einfach z.b. mal die Edits in Outlooks Kontaktformular oder dem von Evolution oder ähnliches.
Und wie du zeichnest ist doch klar jeden buchstaben einzeln und jedesmal wenn ein auch noch so kleiner fizel des controls sich ändert das ganze control.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

naja, lassen wir es gut sein ok ?
aber noch was kurtzt , damit du verseht warum ich diese GUI anfangen:
1: das ist seit ca 12 Jahren mein größer Wunsch was Computer und Programmierung angeht.
2: Ich möchte gerne Wissen wie, viel arbeit dahintersteck und was ich mir für Gedanken machen muss
3: Ich möchte eine GUI schaffen, die schlecht und einfach ist. und nicht nur Augen Pulver ist.

ach ja und noch was
Was glaubst du was bei einem VCL Edit passiert, wenn du da was eingibst ?
Muss ja auch ständig alles neu gezeichnet werden, richtig ?
und zwar Buchstabe für Buchstabe, egal ob sie nur einmal den kompletten String an z.b. TextOut übergeben oder aber einzelne, das dürfte das gleiche bei rauskommen..

Dann versuch dein Glück mit dem unterstreichen des Falsch geschriebenen und fertig.

aufjedenfall kann ich mir es einfach nicht vorstellen über 50 Edit auf ein Forum la zu packen.
Das ist doch unpraktisch. Wobei nur ein zur gleichen Zeit Editiert werden kann.

Gut, wenn du keine Stringgrid nehmen kannst, warum auch immer, dann mache es doch so wie im OI: Nutzte Labels, wenn du drauf klickst wird es zum TEdit.

Kannst du mal ein Bild davon hochladen ?
(ist es geheim ?)
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben: 3: Ich möchte eine GUI schaffen, die schlecht und einfach ist.
Lustiger Tippfehler. ;-)
pluto hat geschrieben: 2: Ich möchte gerne Wissen wie, viel arbeit dahintersteck und was ich mir für Gedanken machen muss
Dann musst du aber von vorne anfangen und nicht einfach z.B. auf GTK aufsetzen.
Also wenn du das richtig machen willst, musst du zumindest unter Linux direkt mit X11 arbeiten, sonst ist's ja witzlos und du hast trotzdem die GTK etc Abhängigkeiten.
Aber bitte: Tu's nicht!!!!! ;-)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Es gibt kein VCL Edit. Das ist nur eine Kapselung des Windows eigenen Controls. So wahnsinnig sowas selber zu schreiben sind nur die Widgetset Begründer.
Und da wird eben auf keinen Fall das ganze Control gezeichnet sindern immer nur der part der gerade neugezeichnet werden muss. Wie das bei allen anständigen Controls ist. In der Paint Message wird dir nämlich gesagt welchen Auschnitt du neuzeichnen musst....

Diese Art von Controls vermeiden jede Art von Overhead müssen Sie auch...

Und zu deinen komischen Ideen mit Labels die zu Edits werden und so weiter behalt die lieber für dich. Ich nehm einfach ein ordentliches Widgetset und kein gefrickel und kann dafür auch Formulare mit n paar Controls drauf haben und darf nicht immer nur 3 pro Formular verwenden.

Schau dir mal ein paar Programme an auf einer Konfigurationsform in tabs kommen ganz schnell mal 30 Edits zusammen.

Viel Spass mit deiner GUI, denk mal drüber nach was passiert wenn du mit der Maus über deine Controls fährst, oder was bei Drag&Drop passiert. Wenn du begreifst was ich meine wirst du das wohl ganz schnell wieder lassen. Ansonsten lass mich bitte damit in ruh.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

@theo
ich bin immer wider überrascht, kannst du hellsehen ?
genau das habe ich vor.....

Erstmal nur in kleinen Maßstäben. Letztendlich muss ich ja nur ein Fenster erzeugen und drauf loszeichnen.
Es gibt kein VCL Edi
Ja das weiß ich inzwischen auch, aber ich meine ja nur.
der Paint Message wird dir nämlich gesagt welchen Auschnitt du neuzeichnen musst....
Genau so habe ich es auch geplant.
Schau dir mal ein paar Programme an auf einer Konfigurationsform in tabs kommen ganz schnell mal 30 Edits zusammen.
Achso meinst du das, Jetzt verstehe ich es.....
Viel Spass mit deiner GUI, denk mal drüber
Dann werde ich habe, bzw. habe ihn schon..... Konnte sogar von meiner Bäcker Lehrer etwas rein fliesen lassen. Bei der Prossesbar *G*
nach was passiert wenn du mit der Maus über deine Controls fährst
Im Moment noch nichts. Aber ich plane sobald die Hot Eigenschaft Aktiviert ist, das dann z.b. die Komponenten einen Gelben Rahmen bekommt, oder so.

und die ganzen Ereignisse müssen ausgelöst werden, das ist mir schon klar.
der was bei Drag&Drop passiert.
Ja, die Frage habe ich mir auch schon gestellt.... aber dazu habe ich ein paar Ideen.
Auch zum Thema Scrollen habe ich mir was einfallen lassen.

Aber diese Punkte sind, jetzt noch nicht dran.
Wenn du begreifst was ich meine wirst du das wohl ganz schnell wieder lassen
Ich weiß genau, wie viel Arbeit da drin steckt, oder was auf mich zu kommt.
Ich werde einfach mal machen, mal sehen wo ich stecken bleibe, bis jetzt sieht es aber gut aus.
Ansonsten lass mich bitte damit in ruh.
Natürlich... ich wollte dich damit auch nicht belästigen. Das ergab sich so....
Wegen deiner Frage. weil es nicht viele Wege gibt.....
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:@theo
ich bin immer wider überrascht, kannst du hellsehen ?
Ja, habe ich das noch nie erwähnt?

:wink:

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Wenn du wüsstest wieviel Arbeit da drin steckt dann weisst du doch das du das in diesem Leben nicht schaffen wirst jedenfalls nicht wenn du noch was anderes nebenbei machst :p
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ach, mein ziel ist es auch nicht Fertig zu werden, das schaffe ich glaube ich auch nicht, da hast du wohl recht, mein ziel ist es ehrer so weit wie möglich zu Kommen. Irgendwo wird es schon stocken, aber mal sehen wie.

Achja: weißt du wie viel Arbeit schon in diesem Bild von Oben steckt ?
Ja, habe ich das noch nie erwähnt?
Bis jetzt noch nicht, aber das fällt mir an dir schon einige male auf.... jetzt weiß ich es ja :!:
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Achja: weißt du wie viel Arbeit schon in diesem Bild von Oben steckt ?
schaut nach < 1h aus. Aber könnten wir diesen Offtopic mist jetzt bitte lassen ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

gerne, monta kann das ja entweder löschen oder verschieben *G*, aber viel weiter bis du jetzt mit deiner Frage auch nicht, oder ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ne aber dein Kram bringt mich auch nicht weiter
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten