Book: Clarion Tips & Techniques Volume 4 (PDF)

Our massive 650+ page Clarion Tips & Techniques Volume 4 is now available as a downloadable PDF!

Download the files

Table of Contents

Browses and Forms

Internationalization Tools Standards: Learning from an ABC Calendar Workaround * 3
  • ABC Calendar Class 5
  • Multi-language class workaround 7
  • Applying the multi-language ABC calendar 9
  • Translation file (PDABCCal.trn) 9
  • User interface file (ABUtilui.clw) 10
  • Sample application 10
  • Preferences 11
  • The AddLanguage procedure 12
  • DateForm 13
  • Conclusion 15
Completely Dynamic Listbox Formatting? * 17
  • Selection criteria 18
  • Sort options 19
  • The multi-tabbed browse 21
  • Multiple format strings 25
  • Summary 27
Edit-In-Place: Getting User Confirmation  * 29
  • Those clever users 30
  • Asking the user 31
  • The embeds 33
  • TakeEvent 35
  • An alternate approach 36
  • Conclusion 37
Updating Hot Fields  * 39
  • Trials and errors 42
  • Record Not Available and browse architecture 43
  • Planting palm firmly on forehead 43
  • One solution 44
  • Summary 46
Aesthetically Pleasing Recursive Updates * 47
  • Recursive updates 48
  • Recursive Inserts 51
  • SELF.BatchProcessing 53
  • Summary 53
Beautifying Clarion Applications * 55
  • Highlighting prompts and lists 56
  • Redrawing controls 58
  • The DrawGlassPanel procedure 59
  • Drawing the line(s) 60
  • Dropping a shadow 61
  • Getting a head(er) 61
  • Adding to your body count 63
  • The end of the line 63
  • Make up 65
  • The template 65
  • Conclusion 66
Replicating IDLE: Throwing Users Out * 67
  • But Wait! 68
  • TakeEvent 69
  • Doing the dirty 70
  • Who Did What? 71
  • Summary 72
Throwing Users Out: Methods of Computation  * 73
  • But first, the assumptions 74
  • And now, another assumption 74
  • Time of day 75
  • Countdown 76
  • Count up 78
  • But wait! There’s more! 78
Recursive Adds * 81
  • The default option 83
  • Buttons on the browse 84
  • Under the bonnet 85
  • And now, back to our show 86
  • Buttons on the form 88
  • Summary 90
A Survey Of Embed Usage  * 91
  • A storage problem 92
  • The schema 92
  • Parsing TXAs 94
  • Procedure types 94
  • The embeds 99
  • Event embeds 105
  • WindowManager method embeds 106
  • Browse embeds 110
  • Process/Report embeds 112
  • Embeds by procedure type 112
  • Conclusions and recommendations 125
Another Single Browse For Multiple Lookups  * 129
  • The browse code 130
  • The extension template 132
  • Features to be added 139
  • Summary 139
An Economical Record Status Control  * 141
  • The template 143
  • Features to be added 147
  • Using the template 147
  • Summary 147
A Template Debugger  * 149
  • The Ingredients 150
  • Adding ODS Messages to Templates 151
  • Conclusion 152
A Class Wrapper for the SimpleOCR API * 155
  • SimpleOCR 156
  • Class wrapper 156
  • Callbacks 158
  • Character recognition 159
Improving On The Non-Related Lookup Template  * 163
  • Using the stock template 163
  • Adding functionality 165
  • The code template 166
  • Summary 169
Global Variables, Threads, Critical interSections and the Dangers of Unprotected Sets * 173
  • Common misconceptions 174
  • From bad to worse 176
  • Practicing safe sets 178
  • There’s gotta be a better way 183
  • Acknowledgements, thus far 183
A Global Variables Protection Class  * 185
  • SetGlobal method 186
  • GetGlobal method 188
  • Testing 189
  • A Template wrapper 196
  • Putting it all together 198
  • Acknowledgements 198
Classes For Background Processes  * 201
  • A background procedure 202
  • Almost STARTing a class 203
  • The example 204
  • Constructors, destructors, and GPFs 207
  • Thread safety 209
  • Summary 209
When START Starts  * 211
  • Controlling START 211
  • Resume 213
  • Summary 214
Using DOS Files To Send Printer Codes * 219
  • The lowly DOS file 220
  • Sending commands 221
  • USB printers 222
  • Summary 222
Printing A Tree From A Page Loaded Browse * 223
  • A dialogue tree 224
  • The tree design 225
  • Printing the tree 227
  • Getting started on coding 228
  • Adding the content 234
Printing Unknown Queue Fields * 239
  • Who()?, What()? 240
Printing a “No Records” Report  * 243
  • Step 1: Add the detail band 243
  • Step 2: Set the band filter 244
  • Step 3: Open the report 245
  • Step 4: Modify AbReport.Inc 246
  • Step 5: Set OpenReport’s result to 0 247
  • Step 6: Set SELF.Response 247
  • Other considerations 247
  • Step 7 248
  • Summary 248
Writing To A Printer Port: Sending Escape Codes  * 249
  • Forward to the past 252
  • CreateFile 253
  • WriteFile 255
  • CloseHandle 256
  • The Sample App 256
  • Summary 257
Print Directly to Printer Made Easier  * 259
  • A single call 260
  • The source procedure 261
The Easiest Way To Write To A Printer Port * 263
  • The Nova Templates 263
  • Winevent 265
  • Summary 266
Direct-To-USB Printing * 267
  • USB need not apply 268
  • DEVCON to the rescue 269
  • Caveats 271
  • Summary 271
Whitemarsh’s Use Of Mimer With Clarion * 275
  • Getting Mimer 275
  • Clarion & Mimer 276
Using the SQL Advanced Tab * 279
  • MS SQL Server and Sample Database 282
  • What properties? 282
  • Regular Totaling - retiring ResetFromView 282
  • PROP:Name 284
  • PROP:GROUPBY 285
  • PROP:HAVING 285
  • SQL() and PROP:ORDER 286
  • Why not just use PROP:SQL then? 286
  • PROP:WHERE 287
  • Summary 288
Creating SQL From XML With XSLT * 289
  • An XML template language 290
  • Transformation 290
  • Tools 290
  • Where to start? 292
  • What about Clarion? 299
Calling XSLT Code From Clarion  * 301
  • Transforming the easy way 304
  • Creating an OLE object in C# 304
  • Finally, Clarion! 308
  • Where to next? 312
  • Resources: 312
External Business Rules with the In-Memory Driver * 315
  • The basics of business rules 316
  • Code changes to the template 323
  • Summary 328
Using SQLIdentity in Clarion 6  * 329
  • The problem 330
  • Getting the primary key value 330
  • Summary 335
Multi-User Primary Keys: A Solution  * 337
  • A solution 338
  • Step 1 ñ Create the PrimaryKeys table 340
  • Step 2 - Create two stored procedures 340
  • Step 3 - Add starting values 341
  • Step 4 - Create a Clarion source procedure 341
  • Step 5 - Remove autoinc 343
  • Step 6. Remove IDENTITY 343
  • Step 7 ñ Add the extension template 343
Embedding The SQLite Engine In Clarion Applications * 345
  • What SQLite is and is not 346
  • Topspeed/SQLite performance comparisons 346
  • So, will you ever get to use it? 348
  • SQLite class quick start 349
  • Inside the supplied SQLite Class 351
  • Conclusion 354
PROP:SQL And Embedded Single Quotes  * 357
  • The problem with QUOTE 357
  • The example app 360
  • Summary 361
Encryption and Application Signing * 365
  • What is a digital certificate? 366
  • Who is it? 367
  • Who vouches for that? 368
  • What is the entity’s encryption code? 369
  • Symmetric encryption 369
  • Upside and Downside of Symmetric Encryption 371
  • Asymmetric Encryption 371
  • Encryption 372
  • Signing 373
  • Combining Public/Private Keys with Symmetric Keys 375
  • Next time 376
Signing Your Applications * 377
  • Your digital certificate 377
  • The Signing Software 379
  • Signing your code using the wizard 380
  • Verifying the Signature 385
  • Signing your code by batch file 386
  • Creating the Batch file 387
  • Conclusion 388
  • Additional Reading 389
Signing Your Applications: New Challenges * 391
  • A little background 392
  • Turning it off manually 393
  • Turning it off with code 396
  • Turning it off granularly 396
  • All users? 398
  • An end run - my application only 398
  • For SetupBuilder users 401
As for “real” networks *  401
  • Miscellaneous security annoyances 402
  • Conclusion 404
  • Additional Reading 404
  • Source code 405
Manifests for Hand Coded Apps  * 407
  • Manifest destiny 408
  • From the editor 411
  • Source code 412
Get Ahead Of Your Competition With Vista And Office 2007 * 413
  • Rose colored glasses 414
Ok, wise guy *  414
  • A not-so-short Clarion bedtime story 415
  • Payday 416
  • The good part? 417
  • The point 417
  • Rub your hands together 417
  • The bigger picture 418
Vista-Compliant INI Files * 419
  • INI folders 420
  • The VistaINIClass 420
  • The template 423
  • Viewing CSIDL values 424
  • Summary 424
  • Source code 424
Running C6 on Vista  * 425
  • Fixing clipped text 425
  • Fixing WinHlp32.exe 426
An Introduction to CVS and WinCVS * 429
  • What is CVS? 430
  • Installing WinCVS 432
  • Installing Python 432
  • Terminology 432
  • Running WinCVS for the first time 433
  • Start with Checkout 438
  • Commit changed files 440
CVS, WinCVS and Clarion * 443
  • Filters 443
  • Change logs 445
  • File status 447
  • Revision graphs 448
  • Version numbers 450
  • Tips 450
  • Summary 451
  • Recommended reading: 452
Version Control with CVS and Clarion 6.x  * 453
  • The software 454
  • SoftVelocity versions and hotfixes 455
  • Tagging a product release (version) 460
  • Modules 461
  • Release 463
  • Branching Out 464
  • Bug FIX! 467
Version Control with CVS and Clarion 6.x, Part 2  * 471
  • CVSNT Install on Red Hat Fedora Core 3 472
  • WinCVS install and configuration 473
  • Configure applications and directories 474
  • Directory Structure 481
  • Reasons to use WinCVS rather than Clarion 484
  • Administration, automatisation 485
  • Tools, ideas 486
  • Source code 487
Understanding The Clarion 6 Version Control Interface  * 489
  • The Clarion 6 Version Control System 490
  • The in and outs of Clarion 6’s VCS system 491
  • Details of operation 494
  • Exporting module TXAs 498
  • Summary 498
Using MS Visual Source Safe With Clarion * 501
  • Installation 502
  • Setup 502
  • Adding files 504
  • Sharing code 505
  • Checking out code 507
  • Getting the latest version 509
  • Summary 511
Eliminating Circular DLL Calls  * 515
  • Getting started 516
  • Automating the evaluation process 518
  • Trying to find an optimum ordering 518
  • Modifying the program 520
  • Summary 523
Nifty Window Tricks And Smart DLL Loading  * 525
  • Getting started 526
  • Layered windows 526
  • ”Look, there’s a hole in my window” 532
  • Wrapping it up 534
DLLs and Reusable Code: Divide and Simplify  * 535
  • Handcoding the DLL 537
  • Create a folder 537
  • Create a .PRJ File 537
  • Create the .CLW file(s) 539
  • Create an .EXP file 539
  • Compiling your DLL 540
  • Sharing the DLL prototypes 541
  • Making your DLL available 541
  • Using your DLL 541
  • Source code 543
Generic DLLs The Template Way  * 545
  • Back to the future 545
  • Export file embed points 546
Hand Coding Export Files  * 549
  • Understanding the nuts and bolts 550
  • Calculating the export list items 551
  • Don’t forget the basics 552
  • Privacy policy 552
  • When things go wrong 553
  • Summary 553
  • Resources 553
Encrypting Data With Number Base Conversion * 557
  • How to do a general base conversion. 558
  • Checksums 562
  • Conclusion 563
App Shutdown Options in Clarion 6.2  * 565
  • Using the templates 565
  • The system tray 568
  • Clean closedown 569
  • Summary 571
Accessing Private Class Data  * 573
  • No source change required 574
  • Project defines 575
The Five Minute Developer: Sorting QUEUEs * 577
  • The SORT function 577
  • Customized sorting 578
The Five Minute Developer: Displaying QUEUEs  * 581
  • The FROM attribute 581
  • PROP:FORMAT 582
  • PROPLIST 583
Inter-Date Computations  * 585
  • Date arithmetic 585
  • Midnight rollover 586
  • StarDates 588
  • Summary 589
A Better DATE Function * 591
  • The DateFixed2 procedure 591
Next Month Anniversary Date Function  * 593
  • The nmDate function 594
  • Getting the end of next month 594
Adding Arrays To Generic Queues With HOWMANY * 597
  • Enough is enough! 598
  • Extending GroupToINI 599
  • Summary 600
A Customized Deep Assign Function  * 603
  • Rolling my own deep assign 604
  • Step 1: Design the data 604
  • Step 2: Find the Matching Pairs 605
  • Step 3: Debug the program 606
  • Step 4: Finalize and test 607
  • Converting to a class and include file. 608
Solving Problems With Finite State Machines  * 609
  • An example 610
  • The Character I/O Class (CharFileIO) 611
  • The Parsing Function (GetToken) 612
  • The Finite State Machine 613
  • Tips 616
Clarion Challenge Results - Remove Links  * 617
  • Carlos Gutierrez 620
  • Poul Jensen 623
  • Brahn Partridge 624
  • Lee White 626
  • Charles Puett 627
  • Gordon Smith 628
  • Larry Sand 629
  • And the winner is Geoff Robinson! 631
  • Conclusions 633
  • The Clarion.NET version 634
Clarion Challenge Results - Profiles * 636
  • Carlos Gutierrez 636
  • David Harms 637
  • Poul Jensen 638
  • Brahn Partridge 639
  • Charles Puett 640
  • Geoff Robinson 641
  • Larry Sand 642
  • Gordon Smith 643
  • Lee White 644
Metadata Management: The Way to a Well-Ordered Enterprise  * 645
  • Convincing the boss 647
  • Design away ETL 647
  • Consolidate and integrate 648
  • Standardize reference data 648
  • Master data 649
  • Assign enterprise identifiers 649
  • Remove redundancies 650
Providing Good Customer Support  * 651
  • The customer’s perspective 651
  • Providing support 652
  • My process 653
  • The routine 653
  • Creating a routine 654
  • More on Automation 655
  • Summary 657

Download the files