Skinner une appli avec les outils DevExpress (dxRibbon)

Poser un dxSkinController sur le DataModule, virer le NativeStyle, choisir une skin.

Dériver la fiche principale de TdxRibbonForm (use dxRibbonForm)
Poser un dxRibbon
SupportNonClientDrawing = true

Sur le OnSkinChanged du dxRibbonSkinChooser :

procedure TFMain.dxSkinChooserGalleryItem1SkinChanged(Sender: TObject;
  const ASkinName: string);
begin
  DM.dxSkinController1.NativeStyle := False;
  DM.dxSkinController1.SkinName := ASkinName;
  dxSkinChooserGalleryItem1.LargeGlyph := dxSkinChooserGalleryItem1.SelectedGroupItem.Glyph;
  //must set ColorSchemeName separately
  //see http://www.devexpress.com/Support/Center/p/S20045.aspx
  dxRibbon1.ColorSchemeName := ASkinName;
  with TRegistry.Create do
  Try
    if OpenKey('\Software\Cat\ProgName',True) then Begin
      WriteString('SkinName',ASkinName);
      CloseKey;
    end;
  finally
    Free;
  end;
end;

Et dans le Main.OnFormShow :

with TRegistry.Create do
Try
  if OpenKey('\Software\Cat\Progname',False) then Begin
    DM.dxSkinController1.SkinName:=ReadString('SkinName');
    dxRibbon1.ColorSchemeName := DM.dxSkinController1.SkinName;
    CloseKey;
  end;
finally
  Free;
end;

Fiches Delphi avec nxCachedDataSet

  • Déposer une TNxQuery (qXXX), un TNxCachedDataset (cXXX), un TDataSource (dsXXX) et un TNxSqlUpdateObject (uXXX).
  • Rattacher le dsXXX à cXXX
  • Rattacher qXXX à cXXX (champ cXXX.SourceDataSet)
  • Rattacher uXXX à cXXX (champ cXXX.UpdateObject)
  • Définir la requête qXXX.Text pour récupérer le contenu de la table
  • Ajouter les champs persistants à qXXX et cXXX
  • Si qXXX a une Datasource, définir un événement cXXX.AfterInsert et y placer :

===

procedure TFFicheContrat.cLienContratCategorieAfterInsert(DataSet: TDataSet);
begin
  cLienContratCategorieidcontrat.AsInteger:=fContratsId.Value;
end;
  • Définir des requêtes pour uXXX

INSERT

INSERT INTO lienscontratscategories (idcontrat,idcategorie,abattement)
VALUES (:idcontrat,:idcategorie,:abattement)

MODIFY

UPDATE lienscontratscategories 
SET idcategorie=:idcategorie, abattement=:abattement
WHERE id=:id

DELETE

DELETE FROM lienscontratscategories WHERE id=:id

Les paramètres :zzz se rapportent à cXXX

  • Ajouter une demande de confirmation de suppression dans cXXX.BeforeDelete :

#

procedure TFFicheContrat.cLienContratCategorieBeforeDelete(DataSet: TDataSet);
begin
  if (MessageDlg('Retirer cet abattement pour cette catégorie de ce support  ?', mtWarning, [mbYes, mbNo], 0) = mrNo) then
    Abort;
end;

NexusDB

LastAutoInc

START TRANSACTION;
insert into titres (nom) values ('test IDENTITY');
SELECT LASTAUTOINC;
COMMIT;

Dans du Delphi, ça donne :

q:=TNxQuery.Create(application);
try
  q.Database:=dm.dbinpro;
  q.sql.text:='START TRANSACTION; '+
              'INSERT INTO titres (isrc,nom,interprete) values (:isrc,:titre,:interprete); ';
              'SELECT LASTAUTOINC; '+
              'COMMIT; ';
  q.ParamByName('titre').AsString:=LTitre.Caption;
  q.ParamByName('isrc').AsString:=LIsrc.Caption;
  q.ParamByName('interprete').AsString:=LArtistes.Caption;
  q.Open;
  i:=q.FieldValues['LastAutoInc'];
finally
  q.free;
end;

Insérer des valeurs nulles

with q.ParamByName('idtitre') do Begin
  Clear;
  Bound:=True;
  DataType:=ftString;
End;