SlideShare a Scribd company logo
Using Datawindow as
UI Component
(Part 1)
zulmach@pbdev.id
pbdev.id coexist
Friday, 31 Januari 2020 | Maxx Cofee Cideng, Jakarta Barat
Tile Menu as one of UI Component
• Basic Idea
• Why Datawindow
• How to Create
• How to Implement it
• Other Possibilities
Basic Idea
• Kind of Cute
• So many already available
• None is free
• None is Native PB Object
• usually OCX, OLE Object or uses PBNI
• Not easy to distribute
• None is compatible with Appeon Web/Mobile
• Only need the SIMPLEST yet NICE LOOKING
• Don’t want too many script to write (copy/paste)
Why Datawindow
• Data centric : rows & columns
• Can put controls as Window
• Powerful DW Expression
• Support expression for many properties
• Controls Behaviour can be based on data
How to Create
Step by step
Create New N-Up Datawindow Object
• Create Datawindow Object N-Up presentation Style
• Columns : icon (string), title (string), visible (number), size (number)
• This example with 6 rows per detail
Clean Up
• Clean up datawindow from columns and text,
select all and delete from the layout
Create Rectangles
• Create rectangles : r_dw, r_width, r_gutter as size reference
put them in header band
• Create 6 rectangles for the tile’s base, put them in detail band
Set r_1 to r_6 properties using expression
Control Visible Height Width
r_1 visible[0] long(describe
("r_width.width"))-40
size[0] * (long(describe("r_width.width"))) +
(size[0] -1) * (long(describe("r_gutter.width")))
r_2 visible[1] long(describe
("r_width.width"))-40
size[1] * (long(describe("r_width.width"))) +
(size[1] -1) * (long(describe("r_gutter.width")))
r_3 visible[2] long(describe
("r_width.width"))-40
size[2] * (long(describe("r_width.width"))) +
(size[2] -1) * (long(describe("r_gutter.width")))
r_4 visible[3] long(describe
("r_width.width"))-40
size[3] * (long(describe("r_width.width"))) +
(size[3] -1) * (long(describe("r_gutter.width")))
r_5 visible[4] long(describe
("r_width.width"))-40
size[4] * (long(describe("r_width.width"))) +
(size[4] -1) * (long(describe("r_gutter.width")))
r_6 visible[5] long(describe
("r_width.width"))-40
size[5] * (long(describe("r_width.width"))) +
(size[5] -1) * (long(describe("r_gutter.width")))
Set r_1 to r_6 properties using expression
Control y x
r_1 long(describe("r_gutt
er.width"))
long(describe("r_gutter.width"))
r_2 long(describe("r_gutt
er.width"))
long(describe("r_gutter.width")) * 2 +
size[0] * (long(describe("r_width.width"))) +
(size[0] -1) * (long(describe("r_gutter.width")))
r_3 long(describe("r_gutt
er.width"))
long(describe("r_gutter.width")) * 3+
size[0] * (long(describe("r_width.width"))) +
(size[0] -1) * (long(describe("r_gutter.width"))) +
size[1] * (long(describe("r_width.width"))) +
(size[1] -1) * (long(describe("r_gutter.width")))
r_4 long(describe("r_gutt
er.width"))
long(describe("r_gutter.width")) * 4+
size[0] * (long(describe("r_width.width"))) +
(size[0] -1) * (long(describe("r_gutter.width"))) +
size[1] * (long(describe("r_width.width"))) +
(size[1] -1) * (long(describe("r_gutter.width"))) +
size[2] * (long(describe("r_width.width"))) +
(size[2] -1) * (long(describe("r_gutter.width")))
Set r_1 to r_6 properties using expression
Control y x
r_5 long(describe("r_gutter
.width"))
long(describe("r_gutter.width")) * 5+
size[0] * (long(describe("r_width.width"))) +
(size[0] -1) * (long(describe("r_gutter.width"))) +
size[1] * (long(describe("r_width.width"))) +
(size[1] -1) * (long(describe("r_gutter.width"))) +
size[2] * (long(describe("r_width.width"))) +
(size[2] -1) * (long(describe("r_gutter.width"))) +
size[3] * (long(describe("r_width.width"))) +
(size[3] -1) * (long(describe("r_gutter.width")))
r_6 long(describe("r_gutter
.width"))
long(describe("r_gutter.width")) * 6+
size[0] * (long(describe("r_width.width"))) +
(size[0] -1) * (long(describe("r_gutter.width"))) +
size[1] * (long(describe("r_width.width"))) +
(size[1] -1) * (long(describe("r_gutter.width"))) +
size[2] * (long(describe("r_width.width"))) +
(size[2] -1) * (long(describe("r_gutter.width"))) +
size[3] * (long(describe("r_width.width"))) +
(size[3] -1) * (long(describe("r_gutter.width"))) +
size[4] * (long(describe("r_width.width"))) +
(size[4] -1) * (long(describe("r_gutter.width")))
Create 6 Computed Field for icon placeholder
Control Expression
c_1 bitmap ( icon[0] )
c_2 bitmap ( icon[1] )
c_3 bitmap ( icon[2] )
c_4 bitmap ( icon[3] )
c_5 bitmap ( icon[4] )
c_6 bitmap ( icon[5] )
Do the same thing
• Copy and modified all the dwexpression for x,y,width,and height
properties from the r_1 to r_6 for :
• Icon
• title
Try out by adding datarows
Download Datawindow Object Source Code
https://zulmach.wordpress.com/2
020/01/18/tile-menu-using-
datawindow-object
• Thank You
• Question and Answer
• Email : zulmach@pbdev.id
• Linkedin : www.linkedin.com/in/zulmach
• Youtube : www.youtube.com/c/pemulapb
• Whatsap : +628155555368
Q&A

More Related Content

What's hot (13)

Hash table and heaps
Hash table and heapsHash table and heaps
Hash table and heaps
Katang Isip
 
Pyclustering tutorial - BANG
Pyclustering tutorial - BANGPyclustering tutorial - BANG
Pyclustering tutorial - BANG
Andrei Novikov
 
D3.js 30-minute intro
D3.js   30-minute introD3.js   30-minute intro
D3.js 30-minute intro
Felipe
 
Trident International Graphics Workshop 2014 5/5
Trident International Graphics Workshop 2014 5/5Trident International Graphics Workshop 2014 5/5
Trident International Graphics Workshop 2014 5/5
Takao Wada
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
Happy Garg
 
Everything is composable
Everything is composableEverything is composable
Everything is composable
Victor Igor
 
Clojure Small Intro
Clojure Small IntroClojure Small Intro
Clojure Small Intro
John Vlachoyiannis
 
Functional JS for everyone - 4Developers
Functional JS for everyone - 4DevelopersFunctional JS for everyone - 4Developers
Functional JS for everyone - 4Developers
Bartek Witczak
 
A Year With MongoDB: The Tips
A Year With MongoDB: The TipsA Year With MongoDB: The Tips
A Year With MongoDB: The Tips
Rizky Abdilah
 
Geohash
GeohashGeohash
Geohash
Sandeep Bhaskar
 
From Trill to Quill: Pushing the Envelope of Functionality and Scale
From Trill to Quill: Pushing the Envelope of Functionality and ScaleFrom Trill to Quill: Pushing the Envelope of Functionality and Scale
From Trill to Quill: Pushing the Envelope of Functionality and Scale
Badrish Chandramouli
 
Data preparation covariates
Data preparation covariatesData preparation covariates
Data preparation covariates
FAO
 
Visualising Big Data
Visualising Big DataVisualising Big Data
Visualising Big Data
Amit Kapoor
 
Hash table and heaps
Hash table and heapsHash table and heaps
Hash table and heaps
Katang Isip
 
Pyclustering tutorial - BANG
Pyclustering tutorial - BANGPyclustering tutorial - BANG
Pyclustering tutorial - BANG
Andrei Novikov
 
D3.js 30-minute intro
D3.js   30-minute introD3.js   30-minute intro
D3.js 30-minute intro
Felipe
 
Trident International Graphics Workshop 2014 5/5
Trident International Graphics Workshop 2014 5/5Trident International Graphics Workshop 2014 5/5
Trident International Graphics Workshop 2014 5/5
Takao Wada
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
Happy Garg
 
Everything is composable
Everything is composableEverything is composable
Everything is composable
Victor Igor
 
Functional JS for everyone - 4Developers
Functional JS for everyone - 4DevelopersFunctional JS for everyone - 4Developers
Functional JS for everyone - 4Developers
Bartek Witczak
 
A Year With MongoDB: The Tips
A Year With MongoDB: The TipsA Year With MongoDB: The Tips
A Year With MongoDB: The Tips
Rizky Abdilah
 
From Trill to Quill: Pushing the Envelope of Functionality and Scale
From Trill to Quill: Pushing the Envelope of Functionality and ScaleFrom Trill to Quill: Pushing the Envelope of Functionality and Scale
From Trill to Quill: Pushing the Envelope of Functionality and Scale
Badrish Chandramouli
 
Data preparation covariates
Data preparation covariatesData preparation covariates
Data preparation covariates
FAO
 
Visualising Big Data
Visualising Big DataVisualising Big Data
Visualising Big Data
Amit Kapoor
 

More from zulmach . (14)

PowerBuilder Short Logic : Loop
PowerBuilder Short Logic : LoopPowerBuilder Short Logic : Loop
PowerBuilder Short Logic : Loop
zulmach .
 
PowerBuilder Productive programming
PowerBuilder Productive programmingPowerBuilder Productive programming
PowerBuilder Productive programming
zulmach .
 
PowerBuilder Productive programming
PowerBuilder Productive programmingPowerBuilder Productive programming
PowerBuilder Productive programming
zulmach .
 
Cara memperkecil ukuran maksimum kapasitas VM Disk
Cara memperkecil ukuran maksimum kapasitas VM DiskCara memperkecil ukuran maksimum kapasitas VM Disk
Cara memperkecil ukuran maksimum kapasitas VM Disk
zulmach .
 
Cara print ke lokal printer dari remote any desk
Cara print ke lokal printer dari remote any deskCara print ke lokal printer dari remote any desk
Cara print ke lokal printer dari remote any desk
zulmach .
 
How to create sliding window hamburger menu style in Powerbuilder
How to create sliding window hamburger menu style in PowerbuilderHow to create sliding window hamburger menu style in Powerbuilder
How to create sliding window hamburger menu style in Powerbuilder
zulmach .
 
Membuat left side menu hamburger style
Membuat left side menu hamburger styleMembuat left side menu hamburger style
Membuat left side menu hamburger style
zulmach .
 
Tile Menu Using Datawindow Object
Tile Menu Using Datawindow ObjectTile Menu Using Datawindow Object
Tile Menu Using Datawindow Object
zulmach .
 
Sharing Tentang Implementasi Sistem Rumah Sakit
Sharing Tentang Implementasi Sistem Rumah SakitSharing Tentang Implementasi Sistem Rumah Sakit
Sharing Tentang Implementasi Sistem Rumah Sakit
zulmach .
 
Creating Modern UI PowerBuilder Framework using native objects
Creating Modern UI PowerBuilder Framework using native objectsCreating Modern UI PowerBuilder Framework using native objects
Creating Modern UI PowerBuilder Framework using native objects
zulmach .
 
Fastest Path to Dekstop, Web and Mobile Enterprise Business Application Platform
Fastest Path to Dekstop, Web and Mobile Enterprise Business Application PlatformFastest Path to Dekstop, Web and Mobile Enterprise Business Application Platform
Fastest Path to Dekstop, Web and Mobile Enterprise Business Application Platform
zulmach .
 
Sistem bisnis dan manajemen rumah sakit
Sistem bisnis dan manajemen rumah sakitSistem bisnis dan manajemen rumah sakit
Sistem bisnis dan manajemen rumah sakit
zulmach .
 
Sistem Bisnis dan Manajemen Rumah Sakit
Sistem Bisnis dan Manajemen Rumah SakitSistem Bisnis dan Manajemen Rumah Sakit
Sistem Bisnis dan Manajemen Rumah Sakit
zulmach .
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deployment
zulmach .
 
PowerBuilder Short Logic : Loop
PowerBuilder Short Logic : LoopPowerBuilder Short Logic : Loop
PowerBuilder Short Logic : Loop
zulmach .
 
PowerBuilder Productive programming
PowerBuilder Productive programmingPowerBuilder Productive programming
PowerBuilder Productive programming
zulmach .
 
PowerBuilder Productive programming
PowerBuilder Productive programmingPowerBuilder Productive programming
PowerBuilder Productive programming
zulmach .
 
Cara memperkecil ukuran maksimum kapasitas VM Disk
Cara memperkecil ukuran maksimum kapasitas VM DiskCara memperkecil ukuran maksimum kapasitas VM Disk
Cara memperkecil ukuran maksimum kapasitas VM Disk
zulmach .
 
Cara print ke lokal printer dari remote any desk
Cara print ke lokal printer dari remote any deskCara print ke lokal printer dari remote any desk
Cara print ke lokal printer dari remote any desk
zulmach .
 
How to create sliding window hamburger menu style in Powerbuilder
How to create sliding window hamburger menu style in PowerbuilderHow to create sliding window hamburger menu style in Powerbuilder
How to create sliding window hamburger menu style in Powerbuilder
zulmach .
 
Membuat left side menu hamburger style
Membuat left side menu hamburger styleMembuat left side menu hamburger style
Membuat left side menu hamburger style
zulmach .
 
Tile Menu Using Datawindow Object
Tile Menu Using Datawindow ObjectTile Menu Using Datawindow Object
Tile Menu Using Datawindow Object
zulmach .
 
Sharing Tentang Implementasi Sistem Rumah Sakit
Sharing Tentang Implementasi Sistem Rumah SakitSharing Tentang Implementasi Sistem Rumah Sakit
Sharing Tentang Implementasi Sistem Rumah Sakit
zulmach .
 
Creating Modern UI PowerBuilder Framework using native objects
Creating Modern UI PowerBuilder Framework using native objectsCreating Modern UI PowerBuilder Framework using native objects
Creating Modern UI PowerBuilder Framework using native objects
zulmach .
 
Fastest Path to Dekstop, Web and Mobile Enterprise Business Application Platform
Fastest Path to Dekstop, Web and Mobile Enterprise Business Application PlatformFastest Path to Dekstop, Web and Mobile Enterprise Business Application Platform
Fastest Path to Dekstop, Web and Mobile Enterprise Business Application Platform
zulmach .
 
Sistem bisnis dan manajemen rumah sakit
Sistem bisnis dan manajemen rumah sakitSistem bisnis dan manajemen rumah sakit
Sistem bisnis dan manajemen rumah sakit
zulmach .
 
Sistem Bisnis dan Manajemen Rumah Sakit
Sistem Bisnis dan Manajemen Rumah SakitSistem Bisnis dan Manajemen Rumah Sakit
Sistem Bisnis dan Manajemen Rumah Sakit
zulmach .
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deployment
zulmach .
 

Recently uploaded (20)

Intranet Examples That Are Changing the Way We Work
Intranet Examples That Are Changing the Way We WorkIntranet Examples That Are Changing the Way We Work
Intranet Examples That Are Changing the Way We Work
BizPortals Solutions
 
Shortcomings of EHS Software – And How to Overcome Them
Shortcomings of EHS Software – And How to Overcome ThemShortcomings of EHS Software – And How to Overcome Them
Shortcomings of EHS Software – And How to Overcome Them
TECH EHS Solution
 
How to Recover Hacked Gmail Account || Help Email Tales
How to Recover Hacked Gmail Account || Help Email TalesHow to Recover Hacked Gmail Account || Help Email Tales
How to Recover Hacked Gmail Account || Help Email Tales
Roger Reed
 
Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025
Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025
Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025
BradBedford3
 
What's-New-with-BoxLang-Brad Wood.pptx.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdfWhat's-New-with-BoxLang-Brad Wood.pptx.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Ortus Solutions, Corp
 
Climate-Smart Agriculture Development Solution.pptx
Climate-Smart Agriculture Development Solution.pptxClimate-Smart Agriculture Development Solution.pptx
Climate-Smart Agriculture Development Solution.pptx
julia smits
 
grade 9 ai project cycle Artificial intelligence.pptx
grade 9 ai project cycle Artificial intelligence.pptxgrade 9 ai project cycle Artificial intelligence.pptx
grade 9 ai project cycle Artificial intelligence.pptx
manikumar465287
 
Software Quality Assurance (Models).pptx
Software Quality Assurance (Models).pptxSoftware Quality Assurance (Models).pptx
Software Quality Assurance (Models).pptx
HibbaTabeer
 
Introduction to QM, QA, QC, Bug's priority and severity
Introduction to QM, QA, QC, Bug's priority and severityIntroduction to QM, QA, QC, Bug's priority and severity
Introduction to QM, QA, QC, Bug's priority and severity
Arshad QA
 
And overview of Nasdanika Models and their applications
And overview of Nasdanika Models and their applicationsAnd overview of Nasdanika Models and their applications
And overview of Nasdanika Models and their applications
Pavel Vlasov
 
ICDL FULL STANDARD 2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdf
ICDL FULL STANDARD  2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdfICDL FULL STANDARD  2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdf
ICDL FULL STANDARD 2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdf
M. Luisetto Pharm.D.Spec. Pharmacology
 
Scalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple DevicesScalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple Devices
Scalefusion
 
Software Risk and Quality management.pptx
Software Risk and Quality management.pptxSoftware Risk and Quality management.pptx
Software Risk and Quality management.pptx
HassanBangash9
 
VFP-Report-Copy-Data-Environment details
VFP-Report-Copy-Data-Environment detailsVFP-Report-Copy-Data-Environment details
VFP-Report-Copy-Data-Environment details
manojbkalla
 
Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...
Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...
Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...
officeiqai
 
Optimising Claims Management with Claims Processing Systems
Optimising Claims Management with Claims Processing SystemsOptimising Claims Management with Claims Processing Systems
Optimising Claims Management with Claims Processing Systems
Insurance Tech Services
 
How to Create a White Label Crypto Exchange.pdf
How to Create a White Label Crypto Exchange.pdfHow to Create a White Label Crypto Exchange.pdf
How to Create a White Label Crypto Exchange.pdf
zak jasper
 
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
Nacho Cougil
 
Top 10 Mobile Banking Apps in the USA.pdf
Top 10 Mobile Banking Apps in the USA.pdfTop 10 Mobile Banking Apps in the USA.pdf
Top 10 Mobile Banking Apps in the USA.pdf
LL Technolab
 
AI Alternative - Discover the best AI tools and their alternatives
AI Alternative - Discover the best AI tools and their alternativesAI Alternative - Discover the best AI tools and their alternatives
AI Alternative - Discover the best AI tools and their alternatives
AI Alternative
 
Intranet Examples That Are Changing the Way We Work
Intranet Examples That Are Changing the Way We WorkIntranet Examples That Are Changing the Way We Work
Intranet Examples That Are Changing the Way We Work
BizPortals Solutions
 
Shortcomings of EHS Software – And How to Overcome Them
Shortcomings of EHS Software – And How to Overcome ThemShortcomings of EHS Software – And How to Overcome Them
Shortcomings of EHS Software – And How to Overcome Them
TECH EHS Solution
 
How to Recover Hacked Gmail Account || Help Email Tales
How to Recover Hacked Gmail Account || Help Email TalesHow to Recover Hacked Gmail Account || Help Email Tales
How to Recover Hacked Gmail Account || Help Email Tales
Roger Reed
 
Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025
Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025
Portland Marketo User Group: MOPs & AI - Jeff Canada - May 2025
BradBedford3
 
What's-New-with-BoxLang-Brad Wood.pptx.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdfWhat's-New-with-BoxLang-Brad Wood.pptx.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Ortus Solutions, Corp
 
Climate-Smart Agriculture Development Solution.pptx
Climate-Smart Agriculture Development Solution.pptxClimate-Smart Agriculture Development Solution.pptx
Climate-Smart Agriculture Development Solution.pptx
julia smits
 
grade 9 ai project cycle Artificial intelligence.pptx
grade 9 ai project cycle Artificial intelligence.pptxgrade 9 ai project cycle Artificial intelligence.pptx
grade 9 ai project cycle Artificial intelligence.pptx
manikumar465287
 
Software Quality Assurance (Models).pptx
Software Quality Assurance (Models).pptxSoftware Quality Assurance (Models).pptx
Software Quality Assurance (Models).pptx
HibbaTabeer
 
Introduction to QM, QA, QC, Bug's priority and severity
Introduction to QM, QA, QC, Bug's priority and severityIntroduction to QM, QA, QC, Bug's priority and severity
Introduction to QM, QA, QC, Bug's priority and severity
Arshad QA
 
And overview of Nasdanika Models and their applications
And overview of Nasdanika Models and their applicationsAnd overview of Nasdanika Models and their applications
And overview of Nasdanika Models and their applications
Pavel Vlasov
 
ICDL FULL STANDARD 2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdf
ICDL FULL STANDARD  2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdfICDL FULL STANDARD  2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdf
ICDL FULL STANDARD 2025 Luisetto mauro - Academia domani- 55 HOURS LONG pdf
M. Luisetto Pharm.D.Spec. Pharmacology
 
Scalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple DevicesScalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple Devices
Scalefusion
 
Software Risk and Quality management.pptx
Software Risk and Quality management.pptxSoftware Risk and Quality management.pptx
Software Risk and Quality management.pptx
HassanBangash9
 
VFP-Report-Copy-Data-Environment details
VFP-Report-Copy-Data-Environment detailsVFP-Report-Copy-Data-Environment details
VFP-Report-Copy-Data-Environment details
manojbkalla
 
Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...
Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...
Feeling Lost in the Blue? Exploring a New Path: AI Mental Health Counselling ...
officeiqai
 
Optimising Claims Management with Claims Processing Systems
Optimising Claims Management with Claims Processing SystemsOptimising Claims Management with Claims Processing Systems
Optimising Claims Management with Claims Processing Systems
Insurance Tech Services
 
How to Create a White Label Crypto Exchange.pdf
How to Create a White Label Crypto Exchange.pdfHow to Create a White Label Crypto Exchange.pdf
How to Create a White Label Crypto Exchange.pdf
zak jasper
 
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
Nacho Cougil
 
Top 10 Mobile Banking Apps in the USA.pdf
Top 10 Mobile Banking Apps in the USA.pdfTop 10 Mobile Banking Apps in the USA.pdf
Top 10 Mobile Banking Apps in the USA.pdf
LL Technolab
 
AI Alternative - Discover the best AI tools and their alternatives
AI Alternative - Discover the best AI tools and their alternativesAI Alternative - Discover the best AI tools and their alternatives
AI Alternative - Discover the best AI tools and their alternatives
AI Alternative
 

#PowerBuilder #tile #menu using #Datawindow

  • 1. Using Datawindow as UI Component (Part 1) [email protected] pbdev.id coexist Friday, 31 Januari 2020 | Maxx Cofee Cideng, Jakarta Barat
  • 2. Tile Menu as one of UI Component • Basic Idea • Why Datawindow • How to Create • How to Implement it • Other Possibilities
  • 3. Basic Idea • Kind of Cute • So many already available • None is free • None is Native PB Object • usually OCX, OLE Object or uses PBNI • Not easy to distribute • None is compatible with Appeon Web/Mobile • Only need the SIMPLEST yet NICE LOOKING • Don’t want too many script to write (copy/paste)
  • 4. Why Datawindow • Data centric : rows & columns • Can put controls as Window • Powerful DW Expression • Support expression for many properties • Controls Behaviour can be based on data
  • 6. Create New N-Up Datawindow Object • Create Datawindow Object N-Up presentation Style • Columns : icon (string), title (string), visible (number), size (number) • This example with 6 rows per detail
  • 7. Clean Up • Clean up datawindow from columns and text, select all and delete from the layout
  • 8. Create Rectangles • Create rectangles : r_dw, r_width, r_gutter as size reference put them in header band • Create 6 rectangles for the tile’s base, put them in detail band
  • 9. Set r_1 to r_6 properties using expression Control Visible Height Width r_1 visible[0] long(describe ("r_width.width"))-40 size[0] * (long(describe("r_width.width"))) + (size[0] -1) * (long(describe("r_gutter.width"))) r_2 visible[1] long(describe ("r_width.width"))-40 size[1] * (long(describe("r_width.width"))) + (size[1] -1) * (long(describe("r_gutter.width"))) r_3 visible[2] long(describe ("r_width.width"))-40 size[2] * (long(describe("r_width.width"))) + (size[2] -1) * (long(describe("r_gutter.width"))) r_4 visible[3] long(describe ("r_width.width"))-40 size[3] * (long(describe("r_width.width"))) + (size[3] -1) * (long(describe("r_gutter.width"))) r_5 visible[4] long(describe ("r_width.width"))-40 size[4] * (long(describe("r_width.width"))) + (size[4] -1) * (long(describe("r_gutter.width"))) r_6 visible[5] long(describe ("r_width.width"))-40 size[5] * (long(describe("r_width.width"))) + (size[5] -1) * (long(describe("r_gutter.width")))
  • 10. Set r_1 to r_6 properties using expression Control y x r_1 long(describe("r_gutt er.width")) long(describe("r_gutter.width")) r_2 long(describe("r_gutt er.width")) long(describe("r_gutter.width")) * 2 + size[0] * (long(describe("r_width.width"))) + (size[0] -1) * (long(describe("r_gutter.width"))) r_3 long(describe("r_gutt er.width")) long(describe("r_gutter.width")) * 3+ size[0] * (long(describe("r_width.width"))) + (size[0] -1) * (long(describe("r_gutter.width"))) + size[1] * (long(describe("r_width.width"))) + (size[1] -1) * (long(describe("r_gutter.width"))) r_4 long(describe("r_gutt er.width")) long(describe("r_gutter.width")) * 4+ size[0] * (long(describe("r_width.width"))) + (size[0] -1) * (long(describe("r_gutter.width"))) + size[1] * (long(describe("r_width.width"))) + (size[1] -1) * (long(describe("r_gutter.width"))) + size[2] * (long(describe("r_width.width"))) + (size[2] -1) * (long(describe("r_gutter.width")))
  • 11. Set r_1 to r_6 properties using expression Control y x r_5 long(describe("r_gutter .width")) long(describe("r_gutter.width")) * 5+ size[0] * (long(describe("r_width.width"))) + (size[0] -1) * (long(describe("r_gutter.width"))) + size[1] * (long(describe("r_width.width"))) + (size[1] -1) * (long(describe("r_gutter.width"))) + size[2] * (long(describe("r_width.width"))) + (size[2] -1) * (long(describe("r_gutter.width"))) + size[3] * (long(describe("r_width.width"))) + (size[3] -1) * (long(describe("r_gutter.width"))) r_6 long(describe("r_gutter .width")) long(describe("r_gutter.width")) * 6+ size[0] * (long(describe("r_width.width"))) + (size[0] -1) * (long(describe("r_gutter.width"))) + size[1] * (long(describe("r_width.width"))) + (size[1] -1) * (long(describe("r_gutter.width"))) + size[2] * (long(describe("r_width.width"))) + (size[2] -1) * (long(describe("r_gutter.width"))) + size[3] * (long(describe("r_width.width"))) + (size[3] -1) * (long(describe("r_gutter.width"))) + size[4] * (long(describe("r_width.width"))) + (size[4] -1) * (long(describe("r_gutter.width")))
  • 12. Create 6 Computed Field for icon placeholder Control Expression c_1 bitmap ( icon[0] ) c_2 bitmap ( icon[1] ) c_3 bitmap ( icon[2] ) c_4 bitmap ( icon[3] ) c_5 bitmap ( icon[4] ) c_6 bitmap ( icon[5] )
  • 13. Do the same thing • Copy and modified all the dwexpression for x,y,width,and height properties from the r_1 to r_6 for : • Icon • title
  • 14. Try out by adding datarows
  • 15. Download Datawindow Object Source Code https://zulmach.wordpress.com/2 020/01/18/tile-menu-using- datawindow-object
  • 16. • Thank You • Question and Answer • Email : [email protected] • Linkedin : www.linkedin.com/in/zulmach • Youtube : www.youtube.com/c/pemulapb • Whatsap : +628155555368 Q&A