Results 1 to 14 of 14

Thread: Mijn Delphi Project: Label Design

  1. #1

    Cool Mijn Delphi Project: Label Design

    Zoals sommige hier grote projecten hebben met weken of jaren werk, ben ik ook begonnen met een nieuw project. Dankzij de hulp van mensen hier lukt dat ondertussen al aardig

    Ik ga een label ontwerp programma maken, en onderweg hiernaartoe maak ik een VCL componentset voor het labelontwerpen zelf. Op deze manier wil ik sneller updates kunnen maken, en bij GUI aanpassingen zal dat makkelijker zijn.
    De eerste is voor mij ook de lastigste, namelijk de designcontainer; het panel/control waar het tekenen van het label gebeurd, zoomen, linealen, en objecten tekenen. Ondertussen ben ik al een eindje, nu bezig met de selectie van objecten mogelijk maken..

    Ik zal hier mijn vorderingen in zetten, en om te beginnen een screenshot van hoever ik nu ben:
    Click image for larger version. 

Name:	Editor1.jpg 
Views:	171 
Size:	96.4 KB 
ID:	7514
    Click image for larger version. 

Name:	Editor2.jpg 
Views:	152 
Size:	95.1 KB 
ID:	7515

    Je kunt links op beeld de properties zien, ik probeer alles instelbaar te houden. Alles wordt getekend met GDI+ (ani alias), en gebufferd voor tekenen op canvas (dank u EricLang!) Alle kleuren zijn instelbaar zodat ik deze kan aanpassen aan de GUI (Office 2010-2016 look).

    Er zal nog veel werk in zitten maar het komt er wel!! Als de hele componentset af is wil ik hiervan een freeware componentset van maken.

  2. #2
    Leuk, succes. Ik ben benieuwd.

  3. #3
    Vandaag even bezig geweest aan een edit box te maken, die ik kan koppelen aan mijn container. Zodat ik bij de instellingen makkelijk de afmetingen kan uitlezen voor het label.
    De edit is instelbaar per eenheid (die terug te vinden is in pagina instellingen van de container). Was even een geprut om goed te krijgen, maar met wat zoek en probeer werk is het gelukt hier ook weer netjes gebufferd tekenen (alhoewel niet perse nodig, maar zo geen flikkeren) zodat we de windows animaties in oa win 7 houden (glow van edit). Gelijk even een aanpassing gedaan aan numbersonly property zodat deze gebruikt kan worden voor extended (decimalseperator).

    Click image for larger version. 

Name:	edit.png 
Views:	120 
Size:	5.5 KB 
ID:	7519

  4. #4
    Vandaag begonnen aan het volgende component. Namelijk een alternatief voor de standaard checkbox en radiobutton. Meer in de stijl zoals bekend in MS Word. Gebasseerd op een TCustomcontrol met StyleServices / Themeservices supported animated drawing. Ik wil de border van een TEdit en daarin een image, en dan een rectangle als selectie. Ik heb al zo'n component, maar wil hem vloeiender tekenen, zodat hij netjes de style/theme animaties overpakt bij bv verkrijgen van focus, selectie, etc.

    Zodra dat component klaar is ga ik die ook als basis gebruiken voor een tal andere componenten zoals oa een border selectie component (voor rand om tekstvak). Zodra deze klaar is zal ik hier weer een screenshotje plaatsen.

  5. #5
    Bovenstaande component is nog work in progress. Het geanimeerd tekenen werkt goed, maar is niet erg merkbaar. Dus ga hem opnieuw herschrijven en gewoon de windows / vclstyles gebruiken zonder animaties. Ondertussen nog bezig aan de GUI, hier al een klein preview van work in progress

    Click image for larger version. 

Name:	Screenshot1.jpg 
Views:	170 
Size:	82.5 KB 
ID:	7530
    Click image for larger version. 

Name:	Screenshot2.png 
Views:	162 
Size:	42.3 KB 
ID:	7531
    Click image for larger version. 

Name:	Screenshot3.png 
Views:	156 
Size:	33.2 KB 
ID:	7532

  6. #6
    Ondertussen wat verder aan het werken aan de designer, mijn opzet een beetje uitgewerkt en ik wil het zo aanpakken:
    - Designer
    De designer dient voor het maken van sjablonen op basis van de label formaten die we gebruiken (en andere formaten zijn aan te maken d.m.v. wizard). Vanuit de designer zijn objecten als tekst barcode afbeeldingen en vormen te plaatsen, en te koppelen aan variabelen zoals productiedatum, vervaldatum, lotcode (op basis van productiedatum), en klant/product gegevens (zoals productnaam, productcode, klantnaam). Vanuit de designer kan er ook afgedrukt worden, maar dient voornamelijk voor het ontwerpen van de sjablonen.

    - Printer
    De printer heeft enkel als doel om de gemaakte sjablonen in de designer af te drukken, op basis van gekoppelde variabelen (zie bovenstaande). Ik wil hier nog een invoer mogelijkheid maken, zodat eventuele aanpassingen in barcode of tekst gemaakt kunnen worden (enkel voor huidige afdruktaak). Omdat wij altijd dezelfde labels gebruiken en op grote hoeveelheden afdrukken met dezelfde gegevens, hoef ik hier geen database koppelingen in te bouwen anders dan de klantgegevens - label sjabloon.
    De bedoeling is dat je in de printer kan aangeven voor welke klant en vervolgens welk product een label nodig is, en het aantal afdrukken.

    - Mobile Printer
    Dit word een touch applicatie voor gebruik vanaf een tablet, omdat we 2 labelprinters hebben die rechtstreeks op een pot/tubo kleven na afdruk, en nu steeds naar kantoor moeten lopen vanuit de productie om via de vaste pc de printopdracht te versturen. Dit zou een versimpelde versie worden van bovenstaande omdat hier maar 1 labelformaat op afgedrukt wordt; en ik wil de GUI gelijkend maken met de interface voor afdrukken op flowpack machines zodat de operatoren hiermee sneller kunnen werken.

  7. #7
    Ik gebruik nu verschillende componenten (3rd party) voor de GUI, omdat ik hiermee snel een mooi ogende applicatie kan maken, ik gebruik bv Devexpress Bars Ribbon, ik houd wel van het vertrouwde office 2016 uiterlijk, en zo heb ik meer tijd om me te concentreren op mijn eigen componenten. Ik heb zelf ook een office 2016 ribbon geschreven, maar dan moet ik nog een gallery control, dropdown buttons, etc maken. Dus hierom gekozen voor Devexpress.

    Hier het scherm bij opstart:
    Click image for larger version. 

Name:	ScreenStart.jpg 
Views:	151 
Size:	61.0 KB 
ID:	7533
    dit is uit te schakelen.

    Icoontjes en dergelijke maak ik grotendeels zelf, sommige zijn nu nog van Devexpress, maar zullen ook vervangen worden door eigen maak (lang leve Photoshop en Fireworks!!). Ik houd van de office 2010 icons, in combinatie met 2016 ribbon.

    Ook begon ik in het vertrouwde D2010, maar ben ik nu bezig in Delphi Berlin. Besloten om de componentset direct aan te passen zodat deze DPI aware is, omdat zeker met dit soort dingen, je toch wilt dat wat je op het scherm ziet overeenkomt met wat je krijgt. Zo wil ik een lineaal die als ik naast het scherm een lineaal leg uitlijnt, en niet er een cm naast zit.
    Last edited by Reidinga; 31-Mar-17 at 22:11.

  8. #8
    De devexpress componenten zijn de investering meer dan waard.

  9. #9
    Ik heb de vcl subscription, dus alles van devexpress. Was verkeerd met bestellen maar zitten mooie componenten tussen..

  10. #10
    Hier hetzelfde. Wat ik wel even wil meegeven dat je even uit moet kijken met de Controller.FocusedRowIndex / DataController.FocusedRowIndex en het sorteren van lijsten zoals een sortorder. Indien je een lijst sorteert dan komt de visual index niet meer overeen met de recordindex in je datacontroller. 0 kan dit net zo goed op visualrecordindex 13 staan. In dat geval zal je Datacontroller.DeleteRecord(value) compleet de mist in gaan. Indien je FocusedRowIndex 0 is en in je Datacontroller is dat index 13, dan zal hij niet je geselecteerde record weggooien, maar het item op index 13. Gebruik in dit geval de RecordIndex propertie.

    Code:
    LIndex := aGridView.ViewData.Rows[FocusedRowIndex].RecordIndex;
    // LIndex kan sorteren dus een andere waarde hebben.
    aGridView.DataController.DeleteRecord(LIndex); //<< LIndex kan hier 13 zijn, maar het item staat na sorteren op index 0 in de lijst. DeleteRecord zij nu wel record 13 weggooien op index 0 in je visuele lijst.
    Om een lang verhaal kort te maken: Na het sorteren komt de FocusedRowIndex niet meer overeen met de RecordIndex van je Rows. FocusedRowIndex is dus niet hetzelfde item wat in je datacontroller geselecteerd staat. Natuurlijk kun je Datacontroller.DeleteFocosed gebruiken, maar dat gaat (in mijn geval) niet altijd op.

    Denk geef het even mee mocht je met het TcxGrid aan de gang gaan.

  11. #11
    Oké dankjewel voor de tip!! Misschien weet jij het volgende ook? Ik zou de kleuren van mijn componenten willen koppelen aan de geselecteerde stijl van de dx componenten (ribbon etc). Weet jij hoe dit best op te lossen?

  12. #12
    Nu een beetje aan het verder werken met de GUI, zo is het makkelijker vind ik persoonlijk om te kijken welke componenten ik nog wil/moet maken en welke instellingen ik er in wil kunnen wijzigen. Nu bezig aan de wizard nieuwe label.

    Hier wat screenshots voor de geïnteresseerden:
    Click image for larger version. 

Name:	Screen1.jpg 
Views:	136 
Size:	62.0 KB 
ID:	7535
    Click image for larger version. 

Name:	Screen2.jpg 
Views:	140 
Size:	65.7 KB 
ID:	7536
    Click image for larger version. 

Name:	Screen3.jpg 
Views:	166 
Size:	60.0 KB 
ID:	7537

    In derde venster zijn 2 van mijn componenten te zien, de edit en de alternatieve radio control. Ik heb hier ook een check versie van gemaakt, wat gemakkelijk is als er meerdere keuzes mogelijk zijn.
    In de 3de pagina komt nog een voorbeeld, maar moet dit nog even uitwerken hoe ik dit wil doen.
    Last edited by Reidinga; 02-Apr-17 at 20:36.

  13. #13
    Vandaag lekker verder bezig geweest met de container, wat testen gedaan met tekenen van handles, en selectieframes etc. Ondertussen bezig geweest om Non visual component te maken, die document gegevens kan schrijven en laden. Ik maak een TList waarin ik de objecten (tekst, afbeeldingen, etc) laadt; en schrijf alle gegevens weg in een TFilestream, en lees daar ook uit. Zo kan ik in afbeelding objecten ook de afbeelding zelf opslaan of laten kiezen om het pad ernaar op te slaan in het document (om ruimte te besparen).

    Ik kan dan vanuit de container het (non visual component) document laden, en hieruit de objecten lezen. Zo kan ik dus in het programma zelf wisselen tussen documenten zonder een nieuwe container te moeten maken. Ik maak een object met basis instellingen als breedte en hoogte en maak hier subclasses van voor objecten als tekstvakken, afbeeldingen etc. Zo kan ik gaanderweg nieuwe types maken en ondersteun ik de oude documenten ook nog.
    Last edited by Reidinga; 03-Apr-17 at 04:22.

  14. #14
    Zijn er nog updates? of ben je niet meer verder gegaan?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •