Jump to content

mhmda

uniGUI Subscriber
  • Posts

    1141
  • Joined

  • Last visited

  • Days Won

    157

Posts posted by mhmda

  1. Hello,

    Hope this will help you in any way :-)

    1. Using Orgon family font for the grid.

    2. Changing the row height.

    3. Dynamically adding Toolbar to the grid.

    4. Inserting controls from design time to the toolbar.

    5. Column with password.

    6. adding some controls the rows.

    7. Filtering using the edit from design time (filter is done in client-side).

    Project: http://3msoft.net/mhmd/Unigui_GoPro.rar

    DB: http://3msoft.net/mhmd/gopro.sql

     

    gp1.png

    gp2.png

    gp3.png

    gp4.png

    gp5.png

    gp6.png

    gp7.png

     

    • Like 2
  2. Reporting is essential in development, I don't think that there a single project without reporting, so you might think of a professional and fast way to to it, reporting components: Fastreport, Quickreport....give you the power to do that (also when it comes to multilangual reports) you can't do it with drawing shapes and text it will be difficult.

  3. Hello,

    1. Use Aligment in Client side, DON'T use aligment in server side !

    2. Don't use the 'aligment' property (as classic vcl app.)

    3. Don't use UnimFormScreenResize event, just waste of time

    4. use Layouts to achieve responsive behavior

     

    If you need further help, you may cointact me in skype or whatsapp.

  4. VPS mean shared resources with other users.

    We use contabo services for years and recently we purchased a dedicated server with 500 GB SSD and 4 TB secondary H.D we also purchased a RAID hardawre to backup primary SSD at real time in case of failure. We backup our customer data (DB & files) to FTP from contabo and we also backup data to Amazaon s3 account using CloudBerry application.

    • Like 1
  5. We already use that but using a client-side code, you may use Gid->ClientEvents->UniEvents->beforeInit:

     

    config.features=[{
            ftype: 'rowbody',
            getAdditionalData: function(data, idx, record, orig) {
                // Usually you would style the my-body-class in a CSS file
                return {
                    rowBody: '<div style="padding: 1em">' + record.get("desc") + '</div>',
                    rowBodyCls: "my-body-class"
                };
            }
        }];

     

    • Upvote 1
  6. function IsValidEmail(const Value: string): Boolean;
    function CheckAllowed(const s: string): Boolean;
      var i: Integer;
      begin
        Result:= false;
        for i:= 1 to Length(s) do
          if not (s[i] in ['a'..'z',
                           'A'..'Z',
                           '0'..'9',
                           '_',
                           '-',
                           '.']) then Exit;
        Result:= true;
      end;
    var
      i: Integer;
      NamePart, ServerPart: string;
    begin
      Result:= False;
      i:=Pos('@', Value);
      if i=0 then Exit;
      NamePart:=Copy(Value, 1, i-1);
      ServerPart:=Copy(Value, i+1, Length(Value));
      if (Length(NamePart)=0) or ((Length(ServerPart)<5)) then Exit;
      i:=Pos('.', ServerPart);
      if (i=0) or (i>(Length(serverPart)-2)) then Exit;
      Result:= CheckAllowed(NamePart) and CheckAllowed(ServerPart);
    end;

     

    • Like 1
    • Upvote 1
×
×
  • Create New...