Erstellen einer Grafikbibliothek von Grund auf - Seite 10

 
Aliaksandr Hryshyn:

In meinem Fall ist der "Dschungel" nicht komplizierter als der Durchschnitt: ein Anzeigefenster (der sichtbare Bereich der Tabelle), ein Fenster in voller Größe, in das alle Zellen passen müssen, es wird in das Hauptfenster geschoben, Fenster für Zeilen und in ihnen Zellen, plus Bildlauf (ein Schieberegler, der von einem Balken begrenzt wird). Die Beschränkungen für die relative Positionierung werden durch die Eigenschaften bestimmt. Nur für den Schieberegler ist es notwendig, Objektbewegungsereignisse abzufangen und bereits die Position des"full size window" zu korrigieren.Dies alles geschieht durch virtuelle Fenster, wir müssen den visuellen Teil damit verbinden, ohne visuellen Teil gibt es Fenster für Linien und Fenster in voller Größe. Und für eine bearbeitbare Zelle, machen Sie ein Eingabefeld (dies ist eine benutzerdefinierte), alle anderen Dinge werden von der Engine behandelt werden - es wird richtige Ereignisse für jede Zelle (Maus-Ereignisse, Neuzeichnen, Verschieben) ..... Dies sind Möglichkeiten, aber es gibt auch ein paar Ideen, um die Leistung zu erhöhen, wenn es zu viele Fenster gibt (große Listen, Tabellen, einige tausend Fenster).

Du machst es..... und wir werden uns unterhalten. :)))

Wie Sie sehen, hat sich dieser Thread aus meinem Crowdsourced Gui-Thread entwickelt, in dem ich eine Auszeichnungssprache und einen Visi-Editor vorgestellt habe. Einige Forumsmitglieder dachten, sie könnten alles besser und schöner in ihrer Bibliothek nachbilden. Das Thema hat sich nach 4 Seiten erledigt. Und sie ist immer noch da. Und du sprichst wie sie von "tausend Fenstern"... kurzum, mach es endlich.)))))

Viel Glück. ))))
 
Ich werde Tabellen ein wenig beschreiben:

1. Eine Zelle ist das einfachste Element einer Tabelle und besteht aus drei Objekten: einer Beschriftung, einem Text und einem Symbol.

2. Es gibt verschiedene Arten von Zellen: Spaltenköpfe, Zeilenköpfe und Zellen im Inneren. Es ist wichtig, sie zu trennen, da Kopfzellen Informationen über Zeilen/Spalten (im Wesentlichen deren Eigenschaften) enthalten. Das erleichtert die Arbeit mit der Tabelle.

3. Jede normale Zelle hat einen Parameter, dessen Wert sie ausgibt, aber es gibt auch reine Textzellen ohne Parameter. Dies ist ein anderer Typ.

3. Die Eigenschaften der Zellen sollten selektiv konfigurierbar sein: für die gesamte Zeile, für eine Spalte oder für die gesamte Tabelle.

4. Die Eigenschaften von Kopfzellen sollten separat konfiguriert werden.

5. Die Tabelle muss in der Lage sein, andere Elemente anzupassen, wie z.B.: Kontrollkästchen, Pop-up-Listen, ... sogar Schieberegler, Fortschrittsbalken und Optionsfelder.

6. Die Tabelle muss so optimiert werden, dass nur die Zellen mit geänderten Werten neu gezeichnet werden, und nicht alle.

7. Wenn die Tabelle in einem begrenzten Sichtfeld platziert wird, sollte sie rollen.

8. Der Tisch kann Teilrollen haben.

9. Die Spalten der Tabelle können ihre Breite ändern.

10. Die Tabelle kann dynamisch sein, wenn die Anzahl der Zeilen nicht vorgegeben ist.

11. Die Tabelle sollte sortierbar sein.

12. Die Tabelle sollte in ihrer Gesamtheit oder nach ausgewählten Zeilen/Spalten eingefärbt werden können.

Gott bewahre uns davor, eine Tabelle aus einfachen Rechtecken und Texten zu erstellen, da solche "Zellen" keine Elemente sind und dies eine Sackgasse darstellt.

Ich habe diese Dinge umgesetzt. Wenn auch nicht perfekt in allem.... Aber sie funktionieren und sind in Ordnung.

Ein Tisch ist sicherlich eines der komplexesten Elemente. Die komplexeste, die viele Mechanismen und verschiedene Lösungen beinhaltet.
 
Das ist der Tisch.))) Ich erinnere mich, dass Anatoly der erste war, der es auf Leinwand gemacht hat. Er hatte eine schwere Zeit... Er hat viele Dinge sehr schön umgesetzt, man hätte neidisch werden können.
 
Реter Konow:
Das ist der Tisch.))) Ich erinnere mich, dass es von Anatoly zum ersten Mal auf Leinwand gemalt wurde. Er hatte eine schwere Zeit... Er hat viele Dinge sehr schön umgesetzt, man hätte neidisch werden können.

Wir lassen es nicht schön aussehen, wir machen es funktional. Langsam mache ich die richtigen Objekte, und der Ansatz ist anders als bei anderen Lösungen. In Tabellenzellen können beliebige Objekte platziert werden. Ich habe der Engine Unterstützung für Kanvas hinzugefügt, so dass sowohl Kanvas als auch normale Rechtecke verwendet werden. Eine Demo ist beigefügt.

Ziehen und Ablegen kann über die obere linke leere Ecke erfolgen.


Dateien:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

Wir lassen es nicht schön aussehen, wir machen es funktional. Langsam mache ich die richtigen Objekte, und der Ansatz ist anders als bei anderen Lösungen. In Tabellenzellen können beliebige Objekte platziert werden. Ich habe der Engine Unterstützung für Kanvas hinzugefügt, so dass sowohl Kanvas als auch normale Rechtecke verwendet werden. Eine Demo ist beigefügt.

Ziehen und Ablegen kann über die obere linke leere Ecke erfolgen.


Nicht schlecht, nicht schlecht...

Zuerst die Kritik:

Handelt es sich um ein einziges großes Fenster oder um mehrere kleine, aneinandergefügte Fenster? Leider sind die Fenster nicht verschiebbar. Die Mechanik funktioniert ein wenig seltsam, es gibt mehr zu bedenken. Ich habe keine Möglichkeit gefunden, etwas in die Zellen zu schreiben, sie sind nicht interaktiv. Bislang gibt es keine funktionierenden Steuerelemente, nicht einmal eine einfache Schaltfläche oder ein Kontrollkästchen. Strukturell sind die Fenster nicht durchdacht - kein Rahmen, keine Minimieren- oder Verkleinern-Schaltfläche, kein gemeines Symbol... Auch ohne ihre Funktion zu erfüllen und um der Dekoration willen sind sie es wert, dass man sie hinzufügt, denn sonst ist es unklar, was wir sehen. Ja, natürlich... sehr roh.

Gelobt:

Trotz der Unzulänglichkeiten sehe ich viele Fortschritte und Potenziale. Natürlich, wenn Sie genug Geduld und Kraft haben, könnte am Ende etwas dabei herauskommen. Nun, das Talent ist zweifelsohne vorhanden).


P.S. zufrieden mit dem Scrollen (wenn auch lahm) und wenn auch begrenzt, aber "gummiartig" Fensterbank. :)))

P.S.S. Entschuldigung, Unterfenster können verschoben werden! Ich habe es anfangs nicht verstanden. Natürlich ist der Bewegungsspielraum stark eingeschränkt, aber dennoch...
 
Ein weiteres Plus: Das "A"-Label (wer weiß warum) ist interaktiv! Dies ist bereits eine gute Sache.
 

Leider sind meine Fenster nach dem Laden nicht so positioniert, wie sie sein sollten:


Der Versuch, sie in den Mittelpunkt zu stellen, ist nicht erfolgreich.
 
Реter Konow:

Nicht schlecht, nicht schlecht...

Zuerst die Kritik:

Handelt es sich um ein einziges großes Fenster oder um mehrere kleine, aneinandergefügte Fenster? Leider ist die Mobilität der Fenster nicht gegeben. Die Mechanik funktioniert ein wenig seltsam, es gibt mehr zu bedenken. Ich habe keine Möglichkeit gefunden, etwas in die Zellen zu schreiben, sie sind nicht interaktiv. Bislang gibt es keine funktionierenden Steuerelemente, nicht einmal eine einfache Schaltfläche oder ein Kontrollkästchen. Strukturell sind die Fenster nicht durchdacht - kein Rahmen, keine Minimieren- oder Verkleinern-Schaltfläche, kein gemeines Symbol... Auch ohne ihre Funktion zu erfüllen und um der Dekoration willen sind sie es wert, dass man sie hinzufügt, denn sonst ist es unklar, was man sieht. Ja, natürlich... sehr roh.

Gelobt:

Trotz der Unzulänglichkeiten sehe ich viele Fortschritte und Potenziale. Natürlich, wenn Sie genug Geduld und Kraft haben, könnte am Ende etwas dabei herauskommen. Nun, das Talent ist zweifelsohne vorhanden).


P.S. zufrieden mit dem Scrollen (wenn auch lahm) und wenn auch begrenzt, aber "gummiartig" Fensterbank. :)))

P.S.S. Entschuldigung, Unterfenster können verschoben werden! Ich habe es anfangs nicht verstanden. Natürlich ist der Bewegungsspielraum stark eingeschränkt, aber dennoch...

Hier haben alle Fenster (allgemein, Zellen, Scrolling, Schieberegler für Scrolling....) das gleiche Arbeitsprinzip, nur unterschiedliche Eigenschaften, die sich nur in der visuellen Darstellung unterscheiden, es gibt auch unsichtbare Fenster, deshalb kann die Visualisierung von Glas in jedem Fenster platziert werden, auch im Schieberegler oder roten kleinen Quadrat, es gibt keinen Unterschied.

Die Gläser in den Zellen sind interaktiv wie im Indikator (Bewegung des Glases selbst über dem Tickchart und der Kopfzeile, vertikale Preisbewegung), nur die Ereignisse des Scrollens des Rads werden durch das rechte Scrollen der Tabelle behandelt.

Diese Tabelle dient als grundlegendes visuelles Element für die Erstellung verschiedener Listen und Tabellen. Es spielt keine Rolle, was in der Zelle platziert wird, Sie können verschiedene Objekte oder sogar die gleiche Tabelle haben.

 
Реter Konow:
Ein weiteres Plus: Das "A"-Label (wer weiß warum) ist interaktiv! Dies ist bereits eine gute Sache.

Haben Sie den Becheranzeiger getestet? Dies ist ein Ein/Aus-Schalter für die automatische Preisdurchsicht.

 
Aliaksandr Hryshyn:

Haben Sie den Becheranzeiger getestet? Gibt es einen Ein/Aus-Schalter für die automatische Preisdurchsicht?

Ja, der Becher selbst und der Tick-Indikator sind gut verarbeitet. Sie haben die geringste Anzahl von Beschwerden. Haben Sie den Text selbst geschrieben oder ihn von einem anderen Autor übernommen?