Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
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