estimation411 wrote:

Приветствую Константин.
Спасибо за помощь. Благодаря этой программы, форуму и вас непосредственно получился вот такой проект

Программу можно скачать прямо с сайте и она бесплатная для пользования.

Еще раз огромное спасибо!!

excellent work!


(18 replies, posted in General)

hichame wrote:

there's no alternative to MVD.

exactly this


(18 replies, posted in General)



(11 replies, posted in General)


try this

   s: string;
   s := 'Your message';
   Translate('This_Field_is_required', s);

list of items



(14 replies, posted in General)

Wood wrote:

you misunderstand.
It will automatically renew on 2022-10-29 to 2023-10-29.
And next year it will automatically renew on 2023-10-29 to 2024-10-29.

and so on...    like all the years before!

yes, but if you stop paying for it then it will expire on 29/10


(10 replies, posted in FAQ)

Thank you sibprogsistem, those are excellent resources to study & learn from, great work!!


(10 replies, posted in FAQ)

Thank you for sharing sibprogsistem! Actually also very curious to see what other applications you have developed.


(2 replies, posted in General)

hello v_pizidis, i think Derek's solution in this topic might be of help for you:


(8 replies, posted in General)

It would be unfortunate, there is no substitute for MVD


(10 replies, posted in Script)

derek wrote:

Hi Joshua,
As I mentioned in my earlier post, another option that you could consider is to use a data-driven approach and hold a small table where you can specify which tabsheet you want to show on startup.
In the attachment, simply change the 'default' tabsheet setting on Form3, restart your application, and a different default now shows.
You can do similar things throughout your application (variable tool tips, variable captions etc etc).

Very clever, as always! thx Derek


to fix a certain tab on startup maybe you can also try something like this with script on your main form onshow procedure:

procedure frmMain_OnShow (Sender: TObject; Action: string);

    frmMain.PageControl1.ActivePageIndex := 0; // tab 1

Hello Derek! Very nice to hear you again!

As always, thank you very very much for taking the time to make this elaborate example!! This is very helpful, it is almost exactly what i wanted to achieve! As you mentioned it is structured in a way which would have not been my first idea but i think it is really clever how it all fits together and the possibities the way of doing things like this creates. Thanks again for all your help!!!

PS: love the animation! big_smile

Hi friends,

It has been a while since i have been active here but i have been lurking the forum. I sincerely hope everyone is well.

I have been thinking about making a little mvdb utility program to help me organize my daily office work, because it would really help me bring a bit of structure, but i am having troubles understanding (or planning) what the best way would be to set up my tables. Basically i need to execute recurring tasks for different clients.

I was wondering if anyone could guide me in the right direction or give me pointers.

The situation:
As of now i am using a simple excel file at the office with a checklist for different clients. There are routine checks i need to do for different clients. Depending on the client, and the kind of checks, the timing intervals are as follows: yearly/quarterly/monthly. So these are the recurring tasks.

Basically i have a table in excel, the table titles are the checks that need to be done, the first column is the client's name, the rest of the columns in the row are the dates or yes/no booleans if the check has been done. At the end of the check interval, lets say it is the monthly checklist, i will copy the excel tab to a new tab manually and restart the different checks. It would be ok to do this manually in mvdb.

What i would like to achieve:
I have made a quick sketch in excel to give an impression of what i would like to achieve. The "tablegrid" corresponds with my current "checklist" that i am using in excel. So i am looking to build a tablegrid like below:

Where i could basically choose from a dropdown/list in the main form which checks i need to do.
For example for the year 2021 and the quarter 2, or the month 5, and so on.

However, i dont seem to be able to grasp how i need to setup my tables, i know this is wrong but am i going in the right direction with this or not? Look below:

Yes, i am not good at this.

I would need these 3 functionalities:
- setup a standard checklist which can be reused
- a standard checklist can have different timing intervals, for example yearly/quarterly/monthly > this depends on the client
- a client can have many different checklists

Many thanks for taking the time to look at this.

Kind regards,


(30 replies, posted in General)

This is sooo good! Thank you Dmitry!!! Been waiting for this for so long smile

PS: Good to hear from you again Dmitry!

asawyer13 wrote:

Does inno setup have a way to automatically update the mvd exe when a new version of the software is uploaded to my server?

I am trying to determine what the best installer/updater to use to distribute and update my app would be.


Hello Alan,

i was looking for the same answer to this as well, unfortunately it isn't a 'quick' solution but if you plan it carefully it shouldn't be too much of a hassle,

- Take a look at:

- And this one:

Hello CDB, thank you for your answer and supplying extra info.

I've experimented with your code a bit, following code will open Outlook and prepare a new email message to review and then press 'send', which is what i was trying to achieve. Now i'm looking into a way to style the body.

procedure Form1_SendEmail_OnClick (Sender: TObject; var Cancel: boolean);
  objMailItem = 0;
  OKToUse: boolean;
  Outlook: Variant;
  vMailItem: variant;
 // OKToUse := false;

    Outlook := CreateOleObject('Outlook.Application');
    vMailItem := Outlook.GetNamespace('MAPI');
    vMailItem.Logon;  {[color=blue]this allows an email to be sent if Outlook is not open at the time of sending[/color]}
    vMailItem := Outlook.CreateItem(objMailItem);
    vMailItem.Subject := 'What a wonderful test email'; {[color=blue]this could be a text box with the string contained in it[/color]}
    vMailItem.Body := 'another string or stringlist with the body text';

  Outlook := nil;  {[color=blue]free the object - this might not be necessary, some sources say it automatically frees when out of scope[/color]}

Thank you very much CDB for posting your solution! I've been keeping an eye on this topic, this is something i've also been trying to do since it would be extremely timesaving and helpful in my little work projects, i'm going to try it out over the weekend. Do you have any idea if it would be possible to style the body, or perhaps even open an outlook email template?


(3 replies, posted in General)


I once sort of had the same issue. Can you verify your project folder tree? When i encountered this issue i was saving a new project somewhere in another MVD project folder.


(2 replies, posted in Script)

Very cool! i like these interfaces!

Thank you for the example prahousefamily, much appreciated!

I also make these kind of layouts but i generally use tabcontrol and hide the edges with images or other panels.

Very cool, thank you for the example!

Excellent solution Derek (as always!) I wanted to try calculated fields at first but i wouldn't know how to begin, how do you come up with those syntaxes!? yikes big_smile

@Asifmute: i would advise to follow Derek's solution, using a calculated field is (in my opinion) much easier to maintain, oversee, and plan in your application. Debugging is much faster, and doesn't (really) break any other code if you would make small adjustments here and there, if it does then a calculated field is quickly adjusted.

I also tried to make a solution based on a report sql query by concatenating (which i learned from Derek) using '||' between the fields, have a look as attached.

STRFTIME('%d', date)    
case strftime('%m', date) when '01' then ' January ' when '02' then ' February ' when '03' then ' March ' when '04' then ' April ' when '05' then ' May ' when '06' then ' June ' when '07' then ' July ' when '08' then ' August ' when '09' then ' September ' when '10' then ' October ' when '11' then ' November ' when '12' then ' December ' else '' end
STRFTIME('%Y', date)
FROM dates
WHERE = $id;  

Hello Asifmute,

Attached is a quick sample.


so you want to show the name of the month?

try in your report SQL:

 case strftime('%m', DateTimerPickerField) when '01' then 'January' when '02' then 'Febuary' when '03' then 'March' when '04' then 'April' when '05' then 'May' when '06' then 'June' when '07' then 'July' when '08' then 'August' when '09' then 'September' when '10' then 'October' when '11' then 'November' when '12' then 'December' else '' end
as month 
  FROM table;

This is fixed by Dmitry, was a script error in the report itself!


is it a wrong date or is it incorrectly formatted? do you have a screenshot?

DriveSoft wrote:

Without attached project I can't help you.

Hello Dmitry,

I sent you you the project via email.