Pliki cookie pomagają nam udostępniać nasze usługi. Korzystając z tych usług, zgadzasz się na użycie plików cookie. Więcej informacji
Sz@rk - narzędziem do budowania aplikacji

2013-10-26

W użytkowaniu każdej aplikacji nadejdzie taka chwila, kiedy będziemy potrzebowali funkcji, której producent nie przewidział lub wykonał wbrew naszym oczekiwaniom.

Co możemy zrobić w takim przypadku:

  • Zamówić rozszerzenie u producenta (nie zawsze będzie to możliwe).
  • Zmienić program - rozwiązanie kosztowne i dodatkowo czasochłonne dla migracji danych.
  • Posłużyć się doraźnie aplikacją typu Access. Rozszerzenia będą poza naszym programem z pełnymi tego konsekwencjami.

Zaawansowanym użytkownikom proponujemy skorzystanie z Sz@rk API/Designer, wbudowanego bezpłatnego narzędzia, które umożliwia dodawanie nowych funkcji do aplikacji z wykorzystaniem całej biblioteki narzędziowej oraz naszych wewnętrznych klas systemu Sz@rk. Oczywiście wszystko dostępne jest tylko wprost z naszej aplikacji, używanie jakiejkolwiek biblioteki poza naszym systemem jest niedozwolone!

Nie można używać bibliotek w innych systemach w tym bezpośrednio w Visual Studio.

W przykładzie utworzymy nowe okno, w pełni funkcjonalne i zgodne z resztą aplikacji. Będzie to tabela kontrahenci z bazy cdn_demo systemu CDN OPTIMA. Dodatkowo tabelę możemy edytować za pomocą okna dialogowego. Dozwolone są operacje dodawania, edytowania i kasowania rekordów.

W przykładzie zastosowano klasę MsSql, którą łatwo można zamienić na klasę MySql i obsłużyć własną bazę danych opartą na serwerze MySQL, np. własnego sklepu internetowego.


Dodane przez użytkownika okno posiada wszystkie standardowe opcje jak: drukowanie, eksport do XLS, PDF, filtrowanie, grupowanie i sortowanie danych, drukowanie wg własnych projektów FR, itp.


Okno dialogowe do edycji danych bieżącego rekordu.


Pełny kod C#.

namespace Szark
{
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using TGSoft.Data;
    using TGSoft.DB;
    using TGSoft.UI;
    using TGSoft.Utils;

    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        private MsSql sql;
        private DADataTable dt;

        public Form1(object sender)
        {
            this.InitializeComponent();
            Icon = Conversions.BmpToIcon(TGSoft.Repository.Properties.Resources.mailicons_contacts_16);
        }

        public void Main()
        {
            sql = new MsSql("localhost", "cdn_demo", "", "");
            sql.SetArithAbortOn = true;
            
            dt = new DADataTable(sql, "SELECT * FROM CDN.Kontrahenci", "", null);
            dt.AutoUpdateOnPost = true;
            dt.TableName = "CDN.Kontrahenci";
            dt.PrimaryKey = "Knt_KntId";
            dt.BeforePost += dt_BeforePost;
            dt.Open();
            
            var grid = new GridControl(this, dt);
            grid.CreateAllColumns();
            grid.Controller.AddEditButtons(true, true, true);
            grid.Controller.BeforeShowEditDialog += gc_BeforeShowEditDialog;
            grid.Controller.BeforeShowAppendDialog += gc_BeforeShowAppendDialog;
            
            ShowDialog();
        }
        
        private void dt_BeforePost(object sender, DADataTableEventArgs e)
        {
            sql.SetNullValues(e.Row);
        }
        
        private void gc_BeforeShowEditDialog(object sender, EventArgs e)
        {
            dt.Edit();
            ShowEditDialog();
        }

        private void gc_BeforeShowAppendDialog(object sender, EventArgs e)
        {
            dt.Append();
            ShowEditDialog();
        }
        
        private void ShowEditDialog()
        {
            using (var dlg = new GridEditForm(dt, 500, 350))
            {
                dlg.AddTextEdit("ID", "Knt_KntId", true, false, 100);
                dlg.AddTextEdit("Kod", "Knt_Kod", true, true, 200);
                
                dlg.AddTextEdit("Nazwa 1", "Knt_Nazwa1", true, true);
                dlg.AddTextEdit("Nazwa 2", "Knt_Nazwa2", true, true);
                
                dlg.AddTextEdit("Ulica", "Knt_Ulica", true, true);
                dlg.AddTextEdit("Miasto", "Knt_Miasto", true, true);
            
                dlg.ShowDialog();
            }
        }
    }
}