Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - metin "10 Kullanci" ve nokta ayni satir degil
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

metin "10 Kullanci" ve nokta ayni satir degil

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
Barthe_dev Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 07 Temmuz 2026
Konum: konya
Durum: Aktif Değil
Puanlar: 25
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Barthe_dev Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: metin "10 Kullanci" ve nokta ayni satir degil
    Gönderim Zamanı: 8 Saat 35 Dakika Önce Saat 16:57
var
  MembersForm : TclForm;
  ScrollBox : TCLVertScrollBox;
  ShellContainer : TclLayout;
  
  // Layouts de la page (Déclarés dans l'ordre inverse pour le rendu alTop)
  UserListContainer : TclLayout;
  FilterLayout : TclLayout;
  SearchLayout : TclLayout;
  HeaderLayout,HeaderLayoutactif,layout2,layout3,layout4 : TclLayout;
  StatusBarLayout : TclLayout;

  // Éléments du Header
  BtnBack : TclProButton;
  BtnAddUser : TclProButton;
  LblHeaderTitle,label1,label2,label3,label4 : TclProLabel;
  DotCyan, DotGreen, DotOrange : TclProPanel;
  TimerPulsation : TclTimer;
  PulsationState : Boolean; // Variable pour suivre l'état de l'effet de respiration

  // Zone de recherche
  SearchEdit : TclProEdit;

  // Filtres
  BtnFilterAll, BtnFilterAdmin, BtnFilterDepot, BtnFilterSekreter : TclProButton;

  // Cartes Utilisateurs
  UserCard1, UserCard2, UserCard3 : TclProPanel;
  
  // Barre de navigation inférieure (Tab Bar)
  TabBarLayout : TclLayout;
  BtnTabDash, BtnTabUsers, BtnTabStock, BtnTabReports, BtnTabSettings : TclProButton;

// ---------------------------------------------------------
// COMPOSANT MODULAIRE : GÉNÉRATEUR DE CARTES UTILISATEUR (UserCard)
// ---------------------------------------------------------
function CreateUserCard(AParent : TObject; AName, AFullName, ARole, AInitials, AStatusColor, AAvatarBgColor : String) : TclProPanel;
var
  CardPanel, AvatarPanel, StatusDot : TclProPanel;
  LblInitials, LblName, LblRole : TclProLabel;
  TextLayout : TclLayout;
  BtnDelete : TclProButton;
{
  CardPanel = MembersForm.AddNewProPanel(AParent, AName);
  CardPanel.Align = alTop;
  CardPanel.Height = 72;
  CardPanel.Margins.Left = 4;
  CardPanel.Margins.Right = 4;
  CardPanel.Margins.Top = 8;
  
  // Styles de la carte (Navy dark, bordure acier)
  CardPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  CardPanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  CardPanel.clProSettings.BorderWidth = 1;
  CardPanel.clProSettings.RoundWidth = 14;
  CardPanel.clProSettings.RoundHeight = 14;
  CardPanel.SetclProSettings(CardPanel.clProSettings);

  // 1. Avatar de l'utilisateur (Rond à gauche)
  AvatarPanel = MembersForm.AddNewProPanel(CardPanel, AName + '_Avatar');
  AvatarPanel.Align = alLeft;
  AvatarPanel.Width = 44;
  AvatarPanel.Height = 44;
  AvatarPanel.Margins.Left = 12;
  AvatarPanel.Margins.Top = 14;
  AvatarPanel.Margins.Bottom = 14;
  AvatarPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AAvatarBgColor);
  AvatarPanel.clProSettings.RoundWidth = 22;
  AvatarPanel.clProSettings.RoundHeight = 22;
  AvatarPanel.SetclProSettings(AvatarPanel.clProSettings);

  LblInitials = MembersForm.AddNewProLabel(AvatarPanel, AName + '_Initials', AInitials);
  LblInitials.Align = alCenter;
  LblInitials.Width = 22;
  LblInitials.Height = 20;
  LblInitials.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  LblInitials.clProSettings.FontSize = 14;
  LblInitials.clProSettings.TextSettings.Font.Style = [fsBold];
  //LblInitials.clProSettings.TextSettings.HorzAlign = clTextAlignCenter;
  LblInitials.SetclProSettings(LblInitials.clProSettings);

  // 2. Zone des textes (Nom & Rôle)
  TextLayout = MembersForm.AddNewLayout(CardPanel, AName + '_TextLay');
  TextLayout.Align = alLeft;
  TextLayout.Width = 160;
  TextLayout.Margins.Left = 12;

  LblName = MembersForm.AddNewProLabel(TextLayout, AName + '_Name', AFullName);
  LblName.Align = alTop;
  LblName.Height = 20;
  LblName.Margins.Top = 16;
  LblName.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblName.clProSettings.FontSize = 14;
  LblName.clProSettings.TextSettings.Font.Style = [fsBold];
  LblName.SetclProSettings(LblName.clProSettings);

  LblRole = MembersForm.AddNewProLabel(TextLayout, AName + '_Role', ARole);
  LblRole.Align = alTop;
  LblRole.Height = 16;
  LblRole.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  LblRole.clProSettings.FontSize = 11;
  LblRole.SetclProSettings(LblRole.clProSettings);

  // 3. Bouton d'action à droite (Corbeille de suppression)
  BtnDelete = MembersForm.AddNewProButton(CardPanel, AName + '_BtnDel', '');
  BtnDelete.Align = alRight;
  BtnDelete.Width = 30;
  BtnDelete.Height = 30;
  BtnDelete.Margins.Right = 12;
  BtnDelete.Margins.Top = 21;
  BtnDelete.Margins.Bottom = 21;
  BtnDelete.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ff4d6a15'); // Fond rouge transparent
  BtnDelete.clProSettings.RoundWidth = 8;
  BtnDelete.clProSettings.RoundHeight = 8;
  // Icône de suppression blanche/rouge
  BtnDelete.SetclProSettings(BtnDelete.clProSettings);

  // 4. Point indicateur de statut en ligne / hors ligne (Glow Dot)
  StatusDot = MembersForm.AddNewProPanel(CardPanel, AName + '_StatusDot');
  StatusDot.Align = alRight;
  StatusDot.Width = 8;
  StatusDot.Height = 8;
  StatusDot.Margins.Right = 16;
  StatusDot.Margins.Top = 32;
  StatusDot.Margins.Bottom = 32;
  StatusDot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AStatusColor);
  StatusDot.clProSettings.RoundWidth = 4;
  StatusDot.clProSettings.RoundHeight = 4;
  StatusDot.SetclProSettings(StatusDot.clProSettings);

  Result = CardPanel;
}

// ---------------------------------------------------------
// ACTIONS & ÉVÉNEMENTS
// ---------------------------------------------------------
void OnBackClick;
{
  MembersForm.Close;
}

void OnAddUserClick;
{
  ShowMessage('Ouverture du formulaire d''ajout de membre...');
}

void OnTimerRespiration;
{
  if (PulsationState)
  {
    // Étape basse : On atténue la luminosité en ajoutant de la transparence ('40' à la fin du code Hexa)
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff40');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade8040');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c40');
    PulsationState = False;
  }
  else
   {
    // Étape haute : On restaure la pleine opacité d'origine
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
    PulsationState = True;
  }

  // Mise à jour indispensable du rendu visuel de chaque point
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  DotGreen.SetclProSettings(DotGreen.clProSettings);
  DotOrange.SetclProSettings(DotOrange.clProSettings);
}

// ---------------------------------------------------------
// INITIALISATION DE LA PAGE GESTION DES MEMBRES
// ---------------------------------------------------------
{
  MembersForm = TclForm.Create(Self);
  MembersForm.SetFormColor('#080d14', '#080d14', clGVertical);

  ScrollBox = MembersForm.AddNewVertScrollBox(MembersForm, 'ScrollBox');
  ScrollBox.Align = alClient;

  ShellContainer = MembersForm.AddNewLayout(ScrollBox, 'ShellContainer');
  ShellContainer.Align = alTop;
  ShellContainer.Height = 812;
  ShellContainer.Margins.Left = 16;
  ShellContainer.Margins.Right = 16;
  ShellContainer.Margins.Top = 10;

  // =========================================================================
  // ORDRE DE RENDU INVERSÉ ALTOP (Du bas vers le haut)
  // =========================================================================

  // [ ÉTAPE 4 : LISTE DES UTILISATEURS (User List Container) ]
  UserListContainer = MembersForm.AddNewLayout(ShellContainer, 'UserListContainer');
  UserListContainer.Align = alTop;
  UserListContainer.Height = 400;
  UserListContainer.Margins.Top = 10;

  // Injection des membres avec notre générateur modulaire
  UserCard1 = CreateUserCard(UserListContainer, 'UserAli', 'Ali Yılmaz', 'Administrateur', 'AY', '#22c55e', '#1d4ed8');
  UserCard2 = CreateUserCard(UserListContainer, 'UserAyse', 'Ayşe Demir', 'Dépôt Sorumlusu', 'AD', '#22c55e', '#a855f7');
  UserCard3 = CreateUserCard(UserListContainer, 'UserMehmet', 'Mehmet Kaya', 'Secrétaire', 'MK', '#ff4d6a', '#dd7b40');


  // [ ÉTAPE 3 : BARRE DE FILTRES RAPIDES ]
  FilterLayout = MembersForm.AddNewLayout(ShellContainer, 'FilterLayout');
  FilterLayout.Align = alTop;
  FilterLayout.Height = 40;
  FilterLayout.Margins.Top = 12;

  BtnFilterAll = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAll', 'Tous');
  BtnFilterAll.Align = alLeft; BtnFilterAll.Width = 65; BtnFilterAll.Height = 32;
  BtnFilterAll.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); // Filtre Actif
  BtnFilterAll.clProSettings.FontColor = clAlphaColor.clHexToColor('#080d14');
  BtnFilterAll.clProSettings.FontSize = 11; BtnFilterAll.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnFilterAll.clProSettings.RoundWidth = 8; BtnFilterAll.clProSettings.RoundHeight = 8;
  BtnFilterAll.SetclProSettings(BtnFilterAll.clProSettings);

  BtnFilterAdmin = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAdmin', 'Admins');
  BtnFilterAdmin.Align = alLeft; BtnFilterAdmin.Width = 75; BtnFilterAdmin.Height = 32; BtnFilterAdmin.Margins.Left = 6;
  BtnFilterAdmin.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterAdmin.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterAdmin.clProSettings.BorderWidth = 1;
  BtnFilterAdmin.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterAdmin.clProSettings.FontSize = 11;
  BtnFilterAdmin.clProSettings.RoundWidth = 8; BtnFilterAdmin.clProSettings.RoundHeight = 8;
  BtnFilterAdmin.SetclProSettings(BtnFilterAdmin.clProSettings);

  BtnFilterDepot = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterDepot', 'Dépôt');
  BtnFilterDepot.Align = alLeft; BtnFilterDepot.Width = 75; BtnFilterDepot.Height = 32; BtnFilterDepot.Margins.Left = 6;
  BtnFilterDepot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterDepot.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterDepot.clProSettings.BorderWidth = 1;
  BtnFilterDepot.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterDepot.clProSettings.FontSize = 11;
  BtnFilterDepot.clProSettings.RoundWidth = 8; BtnFilterDepot.clProSettings.RoundHeight = 8;
  BtnFilterDepot.SetclProSettings(BtnFilterDepot.clProSettings);

  BtnFilterSekreter = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterSekreter', 'Secrétaires');
  BtnFilterSekreter.Align = alClient; BtnFilterSekreter.Height = 32; BtnFilterSekreter.Margins.Left = 6;
  BtnFilterSekreter.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterSekreter.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterSekreter.clProSettings.BorderWidth = 1;
  BtnFilterSekreter.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterSekreter.clProSettings.FontSize = 11;
  BtnFilterSekreter.clProSettings.RoundWidth = 8; BtnFilterSekreter.clProSettings.RoundHeight = 8;
  BtnFilterSekreter.SetclProSettings(BtnFilterSekreter.clProSettings);


  // [ ÉTAPE 2 : BARRE DE RECHERCHE (SearchEdit) ]
  SearchLayout = MembersForm.AddNewLayout(ShellContainer, 'SearchLayout');
  SearchLayout.Align = alTop;
  SearchLayout.Height = 46;
  SearchLayout.Margins.Top = 12;

  SearchEdit = MembersForm.AddNewProEdit(SearchLayout, 'SearchEdit', 'Rechercher un membre...');
  SearchEdit.Align = alClient;
  SearchEdit.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  SearchEdit.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  SearchEdit.clProSettings.BorderWidth = 1;
  SearchEdit.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  SearchEdit.clProSettings.FontSize = 12;
  SearchEdit.clProSettings.RoundWidth = 10; SearchEdit.clProSettings.RoundHeight = 10;
  SearchEdit.SetclProSettings(SearchEdit.clProSettings);


  // [ ÉTAPE 1 : HEADER GESTION DES MEMBRES ]
  HeaderLayout = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayout');
  HeaderLayout.Align = alTop;
  HeaderLayout.Height = 55;

  // Bouton Retour (Gauche)
  label1 = MembersForm.AddNewProLabel(HeaderLayout, 'label1', 'GESTIONNAIRES DES UTILISATEURS');
  label1.Align = alTop;
  label1.Margins.Left = 14; 
  label1.Margins.Top = 16;
  label1.clProSettings.FontColor = clAlphaColor.clHexToColor('#446580');
  label1.clProSettings.FontSize = 12;
  label1.clProSettings.TextSettings.Font.Style = [fsBold];
  label1.SetclProSettings(label1.clProSettings);


  // Titre "MEMBRES" (Centre)
  LblHeaderTitle = MembersForm.AddNewProLabel(HeaderLayout, 'LblHeaderTitle', 'Utilisateurs & roles');
  LblHeaderTitle.Align = alTop;
  LblHeaderTitle.Margins.Left = 14; 
  LblHeaderTitle.Height = 40;
  LblHeaderTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblHeaderTitle.clProSettings.FontSize = 30;
  LblHeaderTitle.clProSettings.TextSettings.Font.Style = [fsBold];
  LblHeaderTitle.SetclProSettings(LblHeaderTitle.clProSettings);
  
  
  
  
  // [ ÉTAPE x : HEADER GESTION DES MEMBRES actifs ]
  HeaderLayoutactif = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayoutactif');
  HeaderLayoutactif.Align = alTop;
  HeaderLayoutactif.Height = 55;
  
  
  //creation du layout2
  layout2 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout2');
  layout2.Align = alLeft;
  layout2.Height = 55;
  layout2.Width = 120; 
  layout2.Margins.Left = 14; 
  layout2.Margins.Top = 10;
  
  //creation du Dot
  DotCyan = MembersForm.AddNewProPanel(layout2, 'DotCyan');
  DotCyan.Align = alLeft; 
  DotCyan.Width = 8; 
  DotCyan.Height = 8;
  DotCyan.Margins.Right =6;
  DotCyan.Margins.Bottom = 35;
  DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); // Opaque au départ
  DotCyan.clProSettings.RoundWidth = 4; 
  DotCyan.clProSettings.RoundHeight = 4;
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  
  label2 = MembersForm.AddNewProLabel(layout2, 'label2', '10 Membres');
  label2.Align = alLeft; 
  label2.Width = 90; 
  label2.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');
  label2.clProSettings.FontSize = 14; 
  label2.clProSettings.TextSettings.Font.Style = [fsBold];
  label2.SetclProSettings(label2.clProSettings);

 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  //creation du layout3
  layout3 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout3');
  layout3.Align = alLeft;
  layout3.Height = 55;
  layout3.Width = 110; 
  layout3.Margins.Left = 14; 
  layout3.Margins.Top = 10;
  // --- 2. GROUPE ACTIFS (VERT) ---
  label3 = MembersForm.AddNewProLabel(layout3, 'label3', '5 Actifs');
  label3.Align = alLeft; 
  label3.Width = 80; 
  label3.Margins.Left = 10; 
  label3.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');
  label3.clProSettings.FontSize = 14; 
  label3.clProSettings.TextSettings.Font.Style = [fsBold];
  label3.SetclProSettings(label3.clProSettings);

  DotGreen = MembersForm.AddNewProPanel(layout3, 'DotGreen');
  DotGreen.Align = alLeft; 
  DotGreen.Width = 8; 
  DotGreen.Height = 8;
  DotGreen.Margins.Right =10;
  DotGreen.Margins.Bottom =35;
  DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
  DotGreen.clProSettings.RoundWidth = 4; 
  DotGreen.clProSettings.RoundHeight = 4;
  DotGreen.SetclProSettings(DotGreen.clProSettings);


  //creation du layout4
  layout4 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout4');
  layout4.Align = alLeft;
  layout4.Height = 55;
  layout4.Width = 100; 
  layout4.Margins.Left = 14; 
  layout4.Margins.Top = 10;
  // --- 3. GROUPE INACTIFS (ORANGE) ---
  label4 = MembersForm.AddNewProLabel(layout4, 'label4', '5 Inactifs');
  label4.Align = alLeft; 
  label4.Width = 80; 
  label4.Margins.Left = 10; 
  //label4.Margins.Top = 16;
  label4.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');
  label4.clProSettings.FontSize = 14; 
  label4.clProSettings.TextSettings.Font.Style = [fsBold];
  label4.SetclProSettings(label4.clProSettings);

  DotOrange = MembersForm.AddNewProPanel(layout4, 'DotOrange');
  DotOrange.Align = alLeft; 
  DotOrange.Width = 8; 
  DotOrange.Height = 8;
  DotOrange.Margins.Right =10;
  DotOrange.Margins.Bottom = 35;
  DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
  DotOrange.clProSettings.RoundWidth = 4; 
  DotOrange.clProSettings.RoundHeight = 4;
  DotOrange.SetclProSettings(DotOrange.clProSettings);




  // --- CONFIGURATION DU TIMER DE RESPIRATION ---
  PulsationState = True;
  TimerPulsation = MembersForm.AddNewTimer(MembersForm, 'TimerPulsation', 750); // Toutes les 750ms pour une transition douce
  TimerPulsation.Enabled = True;
  MembersForm.AddNewEvent(TimerPulsation, tbeOnTimer, 'OnTimerRespiration');
  
  
  
  
  
  
  
  

  
  
  
  
  
  
  
  
  

  // [ ÉTAPE 0 : BARRE D'ÉTAT SYSTÈME (Status Bar) ]
  StatusBarLayout = MembersForm.AddNewLayout(ShellContainer, 'StatusBarLayout');
  StatusBarLayout.Align = alTop;
  StatusBarLayout.Height = 35;


  // =========================================================================
  // BARRE DE NAVIGATION INFÉRIEURE (Tab Bar Active sur "Users")
  // =========================================================================
  TabBarLayout = MembersForm.AddNewLayout(MembersForm, 'TabBarLayout');
  TabBarLayout.Align = alBottom; TabBarLayout.Height = 58;
  
  BtnTabDash = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabDash', 'Dashboard');
  BtnTabDash.Align = alLeft; BtnTabDash.Width = 74;
  BtnTabDash.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabDash.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabDash.clProSettings.FontSize = 9;
  BtnTabDash.SetclProSettings(BtnTabDash.clProSettings);

  BtnTabUsers = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabUsers', 'Membres');
  BtnTabUsers.Align = alLeft; BtnTabUsers.Width = 74;
  BtnTabUsers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabUsers.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff'); // Actif (Bleu Glowing)
  BtnTabUsers.clProSettings.FontSize = 9; 
  BtnTabUsers.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnTabUsers.SetclProSettings(BtnTabUsers.clProSettings);

  BtnTabStock = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabStock', 'Stock');
  BtnTabStock.Align = alLeft; BtnTabStock.Width = 74;
  BtnTabStock.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabStock.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabStock.clProSettings.FontSize = 9; BtnTabStock.SetclProSettings(BtnTabStock.clProSettings);

  BtnTabReports = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabReports', 'Reports');
  BtnTabReports.Align = alLeft; BtnTabReports.Width = 74;
  BtnTabReports.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabReports.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabReports.clProSettings.FontSize = 9; BtnTabReports.SetclProSettings(BtnTabReports.clProSettings);

  BtnTabSettings = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabSettings', 'Settings');
  BtnTabSettings.Align = alClient;
  BtnTabSettings.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabSettings.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabSettings.clProSettings.FontSize = 9; 
  BtnTabSettings.SetclProSettings(BtnTabSettings.clProSettings);

  MembersForm.Run;
  
  }
  
  
  
  
  
  
  
  
  
https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
kayra12 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 23 Aralık 2024
Durum: Aktif Değil
Puanlar: 63
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı kayra12 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 8 Saat 22 Dakika Önce Saat 17:10
  İyi çalışmalar dilerim 
var
  MembersForm : TclForm;
  ScrollBox : TCLVertScrollBox;
  ShellContainer : TclLayout;
  
  // Layouts de la page (Déclarés dans l'ordre inverse pour le rendu alTop)
  UserListContainer : TclLayout;
  FilterLayout : TclLayout;
  SearchLayout : TclLayout;
  HeaderLayout,HeaderLayoutactif,layout2,layout3,layout4 : TclLayout;
  StatusBarLayout : TclLayout;

  // Éléments du Header
  BtnBack : TclProButton;
  BtnAddUser : TclProButton;
  LblHeaderTitle,label1,label2,label3,label4 : TclProLabel;
  DotCyan, DotGreen, DotOrange : TclProPanel;
  TimerPulsation : TclTimer;
  PulsationState : Boolean; // Variable pour suivre l'état de l'effet de respiration

  // Zone de recherche
  SearchEdit : TclProEdit;

  // Filtres
  BtnFilterAll, BtnFilterAdmin, BtnFilterDepot, BtnFilterSekreter : TclProButton;

  // Cartes Utilisateurs
  UserCard1, UserCard2, UserCard3 : TclProPanel;
  
  // Barre de navigation inférieure (Tab Bar)
  TabBarLayout : TclLayout;
  BtnTabDash, BtnTabUsers, BtnTabStock, BtnTabReports, BtnTabSettings : TclProButton;

// ---------------------------------------------------------
// COMPOSANT MODULAIRE : GÉNÉRATEUR DE CARTES UTILISATEUR (UserCard)
// ---------------------------------------------------------
function CreateUserCard(AParent : TObject; AName, AFullName, ARole, AInitials, AStatusColor, AAvatarBgColor : String) : TclProPanel;
var
  CardPanel, AvatarPanel, StatusDot : TclProPanel;
  LblInitials, LblName, LblRole : TclProLabel;
  TextLayout : TclLayout;
  BtnDelete : TclProButton;
{
  CardPanel = MembersForm.AddNewProPanel(AParent, AName);
  CardPanel.Align = alTop;
  CardPanel.Height = 72;
  CardPanel.Margins.Left = 4;
  CardPanel.Margins.Right = 4;
  CardPanel.Margins.Top = 8;
  
  // Styles de la carte (Navy dark, bordure acier)
  CardPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  CardPanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  CardPanel.clProSettings.BorderWidth = 1;
  CardPanel.clProSettings.RoundWidth = 14;
  CardPanel.clProSettings.RoundHeight = 14;
  CardPanel.SetclProSettings(CardPanel.clProSettings);

  // 1. Avatar de l'utilisateur (Rond à gauche)
  AvatarPanel = MembersForm.AddNewProPanel(CardPanel, AName + '_Avatar');
  AvatarPanel.Align = alLeft;
  AvatarPanel.Width = 44;
  AvatarPanel.Height = 44;
  AvatarPanel.Margins.Left = 12;
  AvatarPanel.Margins.Top = 14;
  AvatarPanel.Margins.Bottom = 14;
  AvatarPanel.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AAvatarBgColor);
  AvatarPanel.clProSettings.RoundWidth = 22;
  AvatarPanel.clProSettings.RoundHeight = 22;
  AvatarPanel.SetclProSettings(AvatarPanel.clProSettings);

  LblInitials = MembersForm.AddNewProLabel(AvatarPanel, AName + '_Initials', AInitials);
  LblInitials.Align = alCenter;
  LblInitials.Width = 22;
  LblInitials.Height = 20;
  LblInitials.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  LblInitials.clProSettings.FontSize = 14;
  LblInitials.clProSettings.TextSettings.Font.Style = [fsBold];
  LblInitials.SetclProSettings(LblInitials.clProSettings);

  // 2. Zone des textes (Nom & Rôle)
  TextLayout = MembersForm.AddNewLayout(CardPanel, AName + '_TextLay');
  TextLayout.Align = alLeft;
  TextLayout.Width = 160;
  TextLayout.Margins.Left = 12;

  LblName = MembersForm.AddNewProLabel(TextLayout, AName + '_Name', AFullName);
  LblName.Align = alTop;
  LblName.Height = 20;
  LblName.Margins.Top = 16;
  LblName.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblName.clProSettings.FontSize = 14;
  LblName.clProSettings.TextSettings.Font.Style = [fsBold];
  LblName.SetclProSettings(LblName.clProSettings);

  LblRole = MembersForm.AddNewProLabel(TextLayout, AName + '_Role', ARole);
  LblRole.Align = alTop;
  LblRole.Height = 16;
  LblRole.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  LblRole.clProSettings.FontSize = 11;
  LblRole.SetclProSettings(LblRole.clProSettings);

  // 3. Bouton d'action à droite (Corbeille de suppression)
  BtnDelete = MembersForm.AddNewProButton(CardPanel, AName + '_BtnDel', '');
  BtnDelete.Align = alRight;
  BtnDelete.Width = 30;
  BtnDelete.Height = 30;
  BtnDelete.Margins.Right = 12;
  BtnDelete.Margins.Top = 21;
  BtnDelete.Margins.Bottom = 21;
  BtnDelete.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ff4d6a15'); // Fond rouge transparent
  BtnDelete.clProSettings.RoundWidth = 8;
  BtnDelete.clProSettings.RoundHeight = 8;
  // Icône de suppression blanche/rouge
  BtnDelete.SetclProSettings(BtnDelete.clProSettings);

  // 4. Point indicateur de statut en ligne / hors ligne (Glow Dot)
  StatusDot = MembersForm.AddNewProPanel(CardPanel, AName + '_StatusDot');
  StatusDot.Align = alRight;
  StatusDot.Width = 8;
  StatusDot.Height = 8;
  StatusDot.Margins.Right = 16;
  StatusDot.Margins.Top = 32;
  StatusDot.Margins.Bottom = 32;
  StatusDot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(AStatusColor);
  StatusDot.clProSettings.RoundWidth = 4;
  StatusDot.clProSettings.RoundHeight = 4;
  StatusDot.SetclProSettings(StatusDot.clProSettings);

  Result = CardPanel;
}

// ---------------------------------------------------------
// ACTIONS & ÉVÉNEMENTS
// ---------------------------------------------------------
void OnBackClick;
{
  MembersForm.Close;
}

void OnAddUserClick;
{
  ShowMessage('Ouverture du formulaire d''ajout de membre...');
}

void OnTimerRespiration;
{
  if (PulsationState)
  {
    // Étape basse : On atténue la luminosité en ajoutant de la transparence ('40' à la fin du code Hexa)
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff40');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade8040');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c40');
    PulsationState = False;
  }
  else
  {
    // Étape haute : On restaure la pleine opacité d'origine
    DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff');
    DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
    DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
    PulsationState = True;
  }

  // Mise à jour indispensable du rendu visuel de chaque point
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  DotGreen.SetclProSettings(DotGreen.clProSettings);
  DotOrange.SetclProSettings(DotOrange.clProSettings);
}

// ---------------------------------------------------------
// INITIALISATION DE LA PAGE GESTION DES MEMBRES
// ---------------------------------------------------------
{
  MembersForm = TclForm.Create(Self);
  MembersForm.SetFormColor('#080d14', '#080d14', clGVertical);

  ScrollBox = MembersForm.AddNewVertScrollBox(MembersForm, 'ScrollBox');
  ScrollBox.Align = alClient;

  ShellContainer = MembersForm.AddNewLayout(ScrollBox, 'ShellContainer');
  ShellContainer.Align = alTop;
  ShellContainer.Height = 812;
  ShellContainer.Margins.Left = 16;
  ShellContainer.Margins.Right = 16;
  ShellContainer.Margins.Top = 10;

  // =========================================================================
  // ORDRE DE RENDU INVERSÉ ALTOP (Du bas vers le haut)
  // =========================================================================

  // [ ÉTAPE 4 : LISTE DES UTILISATEURS (User List Container) ]
  UserListContainer = MembersForm.AddNewLayout(ShellContainer, 'UserListContainer');
  UserListContainer.Align = alTop;
  UserListContainer.Height = 400;
  UserListContainer.Margins.Top = 10;

  // Injection des membres avec notre générateur modulaire
  UserCard1 = CreateUserCard(UserListContainer, 'UserAli', 'Ali Yılmaz', 'Administrateur', 'AY', '#22c55e', '#1d4ed8');
  UserCard2 = CreateUserCard(UserListContainer, 'UserAyse', 'Ayşe Demir', 'Dépôt Sorumlusu', 'AD', '#22c55e', '#a855f7');
  UserCard3 = CreateUserCard(UserListContainer, 'UserMehmet', 'Mehmet Kaya', 'Secrétaire', 'MK', '#ff4d6a', '#dd7b40');


  // [ ÉTAPE 3 : BARRE DE FILTRES RAPIDES ]
  FilterLayout = MembersForm.AddNewLayout(ShellContainer, 'FilterLayout');
  FilterLayout.Align = alTop;
  FilterLayout.Height = 40;
  FilterLayout.Margins.Top = 12;

  BtnFilterAll = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAll', 'Tous');
  BtnFilterAll.Align = alLeft; BtnFilterAll.Width = 65; BtnFilterAll.Height = 32;
  BtnFilterAll.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); // Filtre Actif
  BtnFilterAll.clProSettings.FontColor = clAlphaColor.clHexToColor('#080d14');
  BtnFilterAll.clProSettings.FontSize = 11; BtnFilterAll.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnFilterAll.clProSettings.RoundWidth = 8; BtnFilterAll.clProSettings.RoundHeight = 8;
  BtnFilterAll.SetclProSettings(BtnFilterAll.clProSettings);

  BtnFilterAdmin = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterAdmin', 'Admins');
  BtnFilterAdmin.Align = alLeft; BtnFilterAdmin.Width = 75; BtnFilterAdmin.Height = 32; BtnFilterAdmin.Margins.Left = 6;
  BtnFilterAdmin.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterAdmin.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterAdmin.clProSettings.BorderWidth = 1;
  BtnFilterAdmin.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterAdmin.clProSettings.FontSize = 11;
  BtnFilterAdmin.clProSettings.RoundWidth = 8; BtnFilterAdmin.clProSettings.RoundHeight = 8;
  BtnFilterAdmin.SetclProSettings(BtnFilterAdmin.clProSettings);

  BtnFilterDepot = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterDepot', 'Dépôt');
  BtnFilterDepot.Align = alLeft; BtnFilterDepot.Width = 75; BtnFilterDepot.Height = 32; BtnFilterDepot.Margins.Left = 6;
  BtnFilterDepot.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterDepot.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterDepot.clProSettings.BorderWidth = 1;
  BtnFilterDepot.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterDepot.clProSettings.FontSize = 11;
  BtnFilterDepot.clProSettings.RoundWidth = 8; BtnFilterDepot.clProSettings.RoundHeight = 8;
  BtnFilterDepot.SetclProSettings(BtnFilterDepot.clProSettings);

  BtnFilterSekreter = MembersForm.AddNewProButton(FilterLayout, 'BtnFilterSekreter', 'Secrétaires');
  BtnFilterSekreter.Align = alClient; BtnFilterSekreter.Height = 32; BtnFilterSekreter.Margins.Left = 6;
  BtnFilterSekreter.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnFilterSekreter.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  BtnFilterSekreter.clProSettings.BorderWidth = 1;
  BtnFilterSekreter.clProSettings.FontColor = clAlphaColor.clHexToColor('#6b8aaa');
  BtnFilterSekreter.clProSettings.FontSize = 11;
  BtnFilterSekreter.clProSettings.RoundWidth = 8; BtnFilterSekreter.clProSettings.RoundHeight = 8;
  BtnFilterSekreter.SetclProSettings(BtnFilterSekreter.clProSettings);


  // [ ÉTAPE 2 : BARRE DE RECHERCHE (SearchEdit) ]
  SearchLayout = MembersForm.AddNewLayout(ShellContainer, 'SearchLayout');
  SearchLayout.Align = alTop;
  SearchLayout.Height = 46;
  SearchLayout.Margins.Top = 12;

  SearchEdit = MembersForm.AddNewProEdit(SearchLayout, 'SearchEdit', 'Rechercher un membre...');
  SearchEdit.Align = alClient;
  SearchEdit.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  SearchEdit.clProSettings.BorderColor = clAlphaColor.clHexToColor('#1a2d42');
  SearchEdit.clProSettings.BorderWidth = 1;
  SearchEdit.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  SearchEdit.clProSettings.FontSize = 12;
  SearchEdit.clProSettings.RoundWidth = 10; SearchEdit.clProSettings.RoundHeight = 10;
  SearchEdit.SetclProSettings(SearchEdit.clProSettings);


  // [ ÉTAPE 1 : HEADER GESTION DES MEMBRES ]
  HeaderLayout = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayout');
  HeaderLayout.Align = alTop;
  HeaderLayout.Height = 55;

  // Bouton Retour (Gauche)
  label1 = MembersForm.AddNewProLabel(HeaderLayout, 'label1', 'GESTIONNAIRES DES UTILISATEURS');
  label1.Align = alTop;
  label1.Margins.Left = 14; 
  label1.Margins.Top = 16;
  label1.clProSettings.FontColor = clAlphaColor.clHexToColor('#446580');
  label1.clProSettings.FontSize = 12;
  label1.clProSettings.TextSettings.Font.Style = [fsBold];
  label1.SetclProSettings(label1.clProSettings);


  // Titre "MEMBRES" (Centre)
  LblHeaderTitle = MembersForm.AddNewProLabel(HeaderLayout, 'LblHeaderTitle', 'Utilisateurs & roles');
  LblHeaderTitle.Align = alTop;
  LblHeaderTitle.Margins.Left = 14; 
  LblHeaderTitle.Height = 40;
  LblHeaderTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');
  LblHeaderTitle.clProSettings.FontSize = 30;
  LblHeaderTitle.clProSettings.TextSettings.Font.Style = [fsBold];
  LblHeaderTitle.SetclProSettings(LblHeaderTitle.clProSettings);
  
  
  // [ ÉTAPE x : HEADER GESTION DES MEMBRES actifs ]
  HeaderLayoutactif = MembersForm.AddNewLayout(ShellContainer, 'HeaderLayoutactif');
  HeaderLayoutactif.Align = alTop;
  HeaderLayoutactif.Height = 55;
  
  
  // ======================================================
  // LAYOUT 2 (Toplam Kullanıcı) - KUSURSUZ HİZALAMA VE NOKTA
  // ======================================================
  layout2 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout2');
  layout2.Align = alLeft;
  layout2.Height = 55;
  layout2.Width = 120; 
  layout2.Margins.Left = 14; 
  
  // Mavi Nokta
  DotCyan = MembersForm.AddNewProPanel(layout2, 'DotCyan');
  DotCyan.Align = alLeft; 
  DotCyan.Width = 8; 
  DotCyan.Height = 8;
  DotCyan.Margins.Right = 6;
  DotCyan.Margins.Top = 24;      // Dikey ortalama için üst boşluk
  DotCyan.Margins.Bottom = 23;   // UZAMAYI ENGELLEYEN ALT BOŞLUK (55-24-23 = 8px yükseklik)
  DotCyan.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#00d4ff'); 
  DotCyan.clProSettings.RoundWidth = 4; 
  DotCyan.clProSettings.RoundHeight = 4;
  DotCyan.SetclProSettings(DotCyan.clProSettings);
  
  label2 = MembersForm.AddNewProLabel(layout2, 'label2', '10 Kullanıcı');
  label2.Align = alLeft; 
  label2.Width = 90; 
  label2.Height = 20;
  label2.Margins.Top = 18;       // Metin dikey merkezleme
  label2.Margins.Bottom = 17;    // Metin dikey merkezleme alt sınır
  label2.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');
  label2.clProSettings.FontSize = 14; 
  label2.clProSettings.TextSettings.Font.Style = [fsBold];
  label2.SetclProSettings(label2.clProSettings);

  
  // ======================================================
  // LAYOUT 3 (Aktif Kullanıcı) - KUSURSUZ HİZALAMA VE NOKTA
  // ======================================================
  layout3 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout3');
  layout3.Align = alLeft;
  layout3.Height = 55;
  layout3.Width = 110; 
  layout3.Margins.Left = 14; 
  
  // Yeşil Nokta (Önce nokta, sonra yazı eklendi)
  DotGreen = MembersForm.AddNewProPanel(layout3, 'DotGreen');
  DotGreen.Align = alLeft; 
  DotGreen.Width = 8; 
  DotGreen.Height = 8;
  DotGreen.Margins.Right = 6;
  DotGreen.Margins.Top = 24;      // Dikey ortalama için üst boşluk
  DotGreen.Margins.Bottom = 23;   // UZAMAYI ENGELLEYEN ALT BOŞLUK (55-24-23 = 8px yükseklik)
  DotGreen.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4ade80');
  DotGreen.clProSettings.RoundWidth = 4; 
  DotGreen.clProSettings.RoundHeight = 4;
  DotGreen.SetclProSettings(DotGreen.clProSettings);

  label3 = MembersForm.AddNewProLabel(layout3, 'label3', '5 Aktif');
  label3.Align = alLeft; 
  label3.Width = 80; 
  label3.Height = 20;
  label3.Margins.Top = 18;       // Metin dikey merkezleme
  label3.Margins.Bottom = 17;    // Metin dikey merkezleme alt sınır
  label3.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');
  label3.clProSettings.FontSize = 14; 
  label3.clProSettings.TextSettings.Font.Style = [fsBold];
  label3.SetclProSettings(label3.clProSettings);


  // ======================================================
  // LAYOUT 4 (İnaktif Kullanıcı) - KUSURSUZ HİZALAMA VE NOKTA
  // ======================================================
  layout4 = MembersForm.AddNewLayout(HeaderLayoutactif, 'layout4');
  layout4.Align = alLeft;
  layout4.Height = 55;
  layout4.Width = 110; 
  layout4.Margins.Left = 14; 
  
  // Turuncu Nokta (Önce nokta, sonra yazı eklendi)
  DotOrange = MembersForm.AddNewProPanel(layout4, 'DotOrange');
  DotOrange.Align = alLeft; 
  DotOrange.Width = 8; 
  DotOrange.Height = 8;
  DotOrange.Margins.Right = 6;
  DotOrange.Margins.Top = 24;      // Dikey ortalama için üst boşluk
  DotOrange.Margins.Bottom = 23;   // UZAMAYI ENGELLEYEN ALT BOŞLUK (55-24-23 = 8px yükseklik)
  DotOrange.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fb923c');
  DotOrange.clProSettings.RoundWidth = 4; 
  DotOrange.clProSettings.RoundHeight = 4;
  DotOrange.SetclProSettings(DotOrange.clProSettings);

  label4 = MembersForm.AddNewProLabel(layout4, 'label4', '5 İnaktif');
  label4.Align = alLeft; 
  label4.Width = 80; 
  label4.Height = 20;
  label4.Margins.Top = 18;       // Metin dikey merkezleme
  label4.Margins.Bottom = 17;    // Metin dikey merkezleme alt sınır
  label4.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');
  label4.clProSettings.FontSize = 14; 
  label4.clProSettings.TextSettings.Font.Style = [fsBold];
  label4.SetclProSettings(label4.clProSettings);


  // --- CONFIGURATION DU TIMER DE RESPIRATION ---
  PulsationState = True;
  TimerPulsation = MembersForm.AddNewTimer(MembersForm, 'TimerPulsation', 750); // Toutes les 750ms pour une transition douce
  TimerPulsation.Enabled = True;
  MembersForm.AddNewEvent(TimerPulsation, tbeOnTimer, 'OnTimerRespiration');

  
  // [ ÉTAPE 0 : BARRE D'ÉTAT SYSTÈME (Status Bar) ]
  StatusBarLayout = MembersForm.AddNewLayout(ShellContainer, 'StatusBarLayout');
  StatusBarLayout.Align = alTop;
  StatusBarLayout.Height = 35;


  // =========================================================================
  // BARRE DE NAVIGATION INFÉRIEURE (Tab Bar Active sur "Users")
  // =========================================================================
  TabBarLayout = MembersForm.AddNewLayout(MembersForm, 'TabBarLayout');
  TabBarLayout.Align = alBottom; TabBarLayout.Height = 58;
  
  BtnTabDash = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabDash', 'Dashboard');
  BtnTabDash.Align = alLeft; BtnTabDash.Width = 74;
  BtnTabDash.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabDash.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabDash.clProSettings.FontSize = 9;
  BtnTabDash.SetclProSettings(BtnTabDash.clProSettings);

  BtnTabUsers = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabUsers', 'Membres');
  BtnTabUsers.Align = alLeft; BtnTabUsers.Width = 74;
  BtnTabUsers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabUsers.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff'); // Actif (Bleu Glowing)
  BtnTabUsers.clProSettings.FontSize = 9; 
  BtnTabUsers.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnTabUsers.SetclProSettings(BtnTabUsers.clProSettings);

  BtnTabStock = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabStock', 'Stock');
  BtnTabStock.Align = alLeft; BtnTabStock.Width = 74;
  BtnTabStock.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabStock.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabStock.clProSettings.FontSize = 9; BtnTabStock.SetclProSettings(BtnTabStock.clProSettings);

  BtnTabReports = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabReports', 'Reports');
  BtnTabReports.Align = alLeft; BtnTabReports.Width = 74;
  BtnTabReports.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabReports.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabReports.clProSettings.FontSize = 9; BtnTabReports.SetclProSettings(BtnTabReports.clProSettings);

  BtnTabSettings = MembersForm.AddNewProButton(TabBarLayout, 'BtnTabSettings', 'Settings');
  BtnTabSettings.Align = alClient;
  BtnTabSettings.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0d1520');
  BtnTabSettings.clProSettings.FontColor = clAlphaColor.clHexToColor('#3d5a7a');
  BtnTabSettings.clProSettings.FontSize = 9; 
  BtnTabSettings.SetclProSettings(BtnTabSettings.clProSettings);

  MembersForm.Run; 
  
}

https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,036 Saniyede Yüklendi.