Discussing, Learning, and Using Delphi and related technologies to create Great Applications!
procedure Meeting;
const
  MeetingTitle = 'Tech Chat';
  MeetingMonth = 2024.05 ;
  { tags: #2024 }
begin
  WriteLn('''

We have no official presentation this month. Instead, we’ll just discuss whatever topics that arise, possibly touching on RTTI and attributes.

  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Source Control';
  MeetingMonth = 2024.04 ;
  { tags: #2024 }
begin
  WriteLn('''
We have no official presentation this month. Instead we’ll just discuss whatever topics that arise, like the recent release of Delphi 12.1, or why Lazarus produces much faster Linux code than Delphi, or where you were during the Eclipse on April 8? _UPDATE: The Main Topic turned out to be Source Control. A few notes were thrown together at the last minute and a good discussion ensued. Download: PowerPoint Slides (with links!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'One Billion Row Challenge';
  MeetingMonth = 2024.03 ;
  { tags: #2024 }
begin
  WriteLn('''

An interesting challenge was presented on multiple Delphi forums recently that grabbed my interest: read in a billion rows of data, collate and sort them, and print the summaries using only pure Object Pascal. The challenge started in January by an engineer’s blog post and has been expanded to Java, Go, and even SQL! For Delphi and Free Pascal, there’s an open source project and there’s an active discussion on Discord.

  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Embedded Browser with Drag-and-Drop';
  MeetingMonth = 2024.02 ;
  { tags: #Homer Jones #2024 }
begin
  WriteLn('''
Homer will discuss two topics: 1) how he created a Chromium browser in Delphi 2007, and 2) how he implemented drag ’n’ drop between a VCL app and web page fields. Because Chromium relies on external DLLs, the steps involved in creating a browser in D2007 should apply to later Delphi versions. The Chromium support files and libraries must reside in very specific relative paths. That becomes a consideration when distributing the application via an install program.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'The New ODUG Website';
  MeetingMonth = 2024.01 ;
  { tags: #2024 }
begin
  WriteLn('''
A year ago, David mentioned a growing interest in building websites using Hugo and studying its underlying Go programming language; we took a look at both briefly. After building three small sites from scratch, he converted an existing site built with Drupal; this ODUG website was the result of that effort. A theme was found and modified to make the meeting notices look like Pascal procedures. It took a bunch of work and that experience will be shared, along with some of the details of how the site is put together, at the January meeting.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Delphi 12 Athens';
  MeetingMonth = 2023.11 ;
  { tags: #Delphi Release #2023 }
begin
  WriteLn('''
As you’ve probably heard, the latest and greatest development tool from Embarcadero has just been released, RAD Studio 12 Athens. Every time a new major version comes out, it is touted as a significant upgrade and boasts that NOW is the time to upgrade if you’ve been thinking about it. You’ll have to come to our November meeting and see for yourself why this can truly be said of this release.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Introduction to RAD Server';
  MeetingMonth = 2023.10 ;
  { tags: #RAD Server #2023 }
begin
  WriteLn('''
RAD Server is an Extendable REST Server in a box. You install it and immediately have a REST service with authentication and customizable API calls that can be written in Delphi. We’ll be using Delphi 11 Alexandria to showcase RAD Server 4.2, how to install it, how to write modules for it, and how to test and deploy it. As the title says, this is an introduction. We will follow this in another meeting with more advanced capabilities, such as downloading files, accessing databases, and posting updates.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'A New MessageBox';
  MeetingMonth = 2023.05 ;
  { tags: #Homer Jones #2023 }
begin
  WriteLn('''
Homer Jones created a new Message Dialog that solves problems with the standard Delphi 2007 ones–and even the latest ones. The two main problems are: 1) they can be hidden behind other windows, and 2) they don’t appear centered on the application’s main form, even when Position is set to poMainFormCenter (that seems to have been fixed in later Delphi versions, but the former is still an issue). When a dialog box is hidden, the app freezes; they are modal, but the user can’t respond because it’s hidden.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;