07-03-2023, Saat: 11:17
Öncelikle herkesin geçmiş berat kandilini kutluyor herkes için sağlık mutluluk ve huzur getirmesini diliyorum.
Vatanımız ve milletimizi için daha güzel günler getirmesini diliyorum.
Ufak bir konu hakkında yardımınızı rica ediyorum. Tanımladığım bir record ile sorun yaşıyorum. Aşağıda resim ve kod parçaları ile anlatmaya çalışacağım umarım başarabilirim.
Masa sistemi bu şekilde sipariş için tıklandığında süreyi saymaya başlıyor.
sorun şu ki süre yazması için işaretlediğim ve sonradan oluşturduğum "labelTime" değişkenine değilde panelin-caption değerine yazıyor , sorunsuz da çalışıyor fakat yazması gereken alan belirttiğim gibi "Labeltime" değişkeni bu konuda yardım rica ediyorum.
Panel için tanımladığım record tanımı
Masaların yüklendiği kısım
Bu şekilde de denedim ama yine sonuç aynı çalışmadı sayıyor fakat labeltime.caption değerine yazmıyor.
Veya bu şekilde denediğimde de yine aynı durum Panel.caption için atama yapınca çalışıyor.
Vatanımız ve milletimizi için daha güzel günler getirmesini diliyorum.
Ufak bir konu hakkında yardımınızı rica ediyorum. Tanımladığım bir record ile sorun yaşıyorum. Aşağıda resim ve kod parçaları ile anlatmaya çalışacağım umarım başarabilirim.
Masa sistemi bu şekilde sipariş için tıklandığında süreyi saymaya başlıyor.
sorun şu ki süre yazması için işaretlediğim ve sonradan oluşturduğum "labelTime" değişkenine değilde panelin-caption değerine yazıyor , sorunsuz da çalışıyor fakat yazması gereken alan belirttiğim gibi "Labeltime" değişkeni bu konuda yardım rica ediyorum.
Panel için tanımladığım record tanımı
Var Panels : array of record Panel : TRzPanel ; Timer : TTimer ; StartTime : TDateTime ; Labeltime : TLabel ; end;
Masaların yüklendiği kısım
TabSheet := TabControl.FindComponent(TabName) as TTabSheet; if Assigned(TabSheet) then TabControl.Pages[TabSheet.PageIndex].Free ; TabSheet := TTabSheet.Create(TabControl); TabSheet.Name := TabName ; TabSheet.PageControl := TabControl; TabSheet.Caption := TabCaption ; SetLength(Panels, PanelCount); sSQlTmp := ' SELECT * FROM Masatanimlari WHERE tabname='+Quotedstr(tabname) + ' order By masaid ' ; SQlServerDb('R',DataList.adoMasa1,sSQlTmp); With datalist.adoMasa1 do begin Repeat i:= recno-1; Panels[i].Panel := TPanel.Create(TabSheet); Panels[i].Panel.Width := PanelWidth; Panels[i].Panel.Height := PanelHeight; Panels[i].Panel.Left := i * PanelWidth; Panels[i].Panel.Color := Fieldbyname('masarenk').Value ; Panels[i].Panel.Font.Name := 'Exo'; Panels[i].Panel.Font.Color := Fieldbyname('yazirenk').Value ; Panels[i].Panel.Font.Size := Fieldbyname('yaziboy').Value ; Panels[i].Panel.Left := Fieldbyname('soldan').Value ; Panels[i].Panel.Top := Fieldbyname('yukardan').Value ; Panels[i].Panel.Tag := Fieldbyname('masaid').Value ; Panels[i].Panel.Caption := Fieldbyname('masano').AsString ; Panels[i].LabelTime := TLabel.Create(Panels[i].Panel); Panels[i].LabelTime.Name := 'LabelTime'+inttostr(i); Panels[i].LabelTime.Parent := Panels[i].Panel; Panels[i].LabelTime.Caption := '00:00'; Panels[i].LabelTime.Font.Name := 'calibri'; Panels[i].LabelTime.Align := alBottom ; Panels[i].LabelTime.Alignment := taCenter ; Panels[i].LabelTime.Font.Size := 10 ; Panels[i].LabelTime.Font.Color := clWhite; Panels[i].Panel.Parent := TabSheet; Panels[i].Panel.OnClick := PanelOnClick ; Next; Until Eof; end;
Bu şekilde de denedim ama yine sonuç aynı çalışmadı sayıyor fakat labeltime.caption değerine yazmıyor.
procedure TRestoran.TimerTick(Sender: TObject); var i: Integer; LabelTime: TLabel; begin for i := Low(Panels) to High(Panels) do begin if Panels[i].Timer = Sender then begin LabelTime := Panels[i].Panel.FindComponent('LabelTime') as TLabel; if Assigned(LabelTime) then LabelTime.Caption := FormatDateTime('nn:ss', Now - Panels[i].StartTime); Label2.Caption := FormatDateTime('nn:ss', Now - Panels[i].StartTime); // aslında bu şekilde acaba sayamıyormu diye eklediğimde saydığını görüyorum. Panels[i].panel.Caption := FormatDateTime('nn:ss', Now - Panels[i].StartTime); // Panel e atama yaptığımda çalışıyor. aşağıdaki resimdeki gibi. Break; end; end; end;
Veya bu şekilde denediğimde de yine aynı durum Panel.caption için atama yapınca çalışıyor.
procedure TRestoran.TimerTick(Sender: TObject); var i: Integer; begin for i := Low(Panels) to High(Panels) do begin if Panels[i].Timer = Sender then begin Panels[i].Panel.Caption := FormatDateTime('nn:ss', Now - Panels[i].StartTime); // Bu Şekilde sorunsuz çalışıyor fakat Panel - caption değerine yazıyor Panels[i].labelTime.Caption := FormatDateTime('nn:ss', Now - Panels[i].StartTime); // istediğim bu şekilde benim eklediğim labelTime - caption değerine yazmak // ama ne yaptıysan beceremedim. Break; end; end; end;
procedure TRestoran.PanelOnClick(sender:TObject) ; var i: Integer; Panel: TPanel; begin Panel := Sender as TPanel; // Panel için kaydedilmiş bir zamanlayıcı yoksa, yeni bir zamanlayıcı oluştur. for i := Low(Panels) to High(Panels) do begin if Panels[i].Panel = Panel then begin Panels[i].Timer.Enabled := not Panels[i].Timer.Enabled; Exit; end; end; SetLength(Panels, Length(Panels) + 1); i := High(Panels); Panels[i].Panel := Panel; Panels[i].StartTime := Now; Panels[i].Timer := TTimer.Create(nil); Panels[i].Timer.Interval := 1000; Panels[i].Timer.Enabled := True; Panels[i].Timer.OnTimer := TimerTick; end;