Autor Beitrag
DiamondDog
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 460



BeitragVerfasst: Mi 08.10.08 12:18 
Hallo Leute,
ich hab da folgenden Code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
procedure TfrmMain.NGUinGridSelectCell(Sender: TObject; ACol,
  ARow: Integer);
var h:integer;
    statuspic:string;
begin
h:=NGUinGrid.SelectedRow;
statuspic:=NGUinGrid.Cell[0,h].AsString;
if statuspic = '1' then
  begin
    Image1.Visible:=True;
    Image2.Visible:=False;
    Image3.Visible:=False;
    Image4.Visible:=False;
  end;
if statuspic = '2' then
  begin
    Image1.Visible:=False;
    Image2.Visible:=True;
    Image3.Visible:=False;
    Image4.Visible:=False;
  end;
if statuspic = '3' then
  begin
    Image1.Visible:=False;
    Image2.Visible:=False;
    Image3.Visible:=True;
    Image4.Visible:=False;
  end;
if statuspic = '4' then
  begin
    Image1.Visible:=False;
    Image2.Visible:=False;
    Image3.Visible:=False;
    Image4.Visible:=True;
  end;
end;
Das funktioniert auch so ganz gut.
Nur hab ich jetzt das Problem das ich das auf 35 Bilder erweitern muss
und dann kommt da schon einiges zusammen.
Kann mir vll jemand Helfen den Code etwas kürzer zu machen?

Danke schon mal.

Mfg Dog
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.10.08 12:22 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Image1.Visible := statuspic = '1';
Image2.Visible := statuspic = '2';
Image3.Visible := statuspic = '3';
//etc.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 12:27 
Warum nimmst du so viele TImage-Komponenten? Pack die Bilder lieber in eine Ressource und lade diese dann in eine TImage-Komponente, das ist deutlich schneller, weil nicht die ganzen Bilder und die Komponenten beim Start geladen werden.
DiamondDog Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 460



BeitragVerfasst: Mi 08.10.08 12:27 
Ok das funkrioniert so weit, hab jetzt nur das Problem das alle andern,
auf False gesetzt werden müssen weil sonst das Bild was gezeigt werden soll,
überlegt wird und man es nicht sieht.
Wie mach ich den das?

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Warum nimmst du so viele TImage-Komponenten? Pack die Bilder lieber in eine Ressource und lade diese dann in eine TImage-Komponente, das ist deutlich schneller, weil nicht die ganzen Bilder und die Komponenten beim Start geladen werden.


Wenn du mir dafür ein Beispiel geben könntest wäre das echt super,
weil damit kenn ich mich leider nicht aus.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.10.08 12:30 
Versteh ich nicht ganz. Außerdem schau Dir mal die Frage von jaenicke an, die erscheint mir nicht unberechtigt.

[edit]http://www.delphi-fundgrube.de/faq01.htm, such da mal nach dem Stichwort Ressoure [/edit]
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 12:36 
user profile iconDiamondDog hat folgendes geschrieben Zum zitierten Posting springen:
Ok das funkrioniert so weit, hab jetzt nur das Problem das alle andern,
auf False gesetzt werden müssen weil sonst das Bild was gezeigt werden soll,
überlegt wird und man es nicht sieht.
Genau das macht user profile iconDeddyHs Quelltext ja, du musst die nur vorher via Objektinspektor unsichtbar machen, da sonst bis zum ersten Klick eben alle sichtbar sind.

Trotzdem: ich rate dir dringend zu einer anderen Vorgehensweise, zum Beispiel der von mir geposteten.
Eine Anleitung gibts hier, wie man Bilder so speichert und lädt:
www.delphi-library.d...iewtopic.php?t=85876
Bei LoadFromResourceName musst du den Namen dann aus dem festen Namen und deiner Zahl zusammensetzen ;-):
ausblenden Delphi-Quelltext
1:
Image1.Picture.Bitmap.LoadFromRessourceName(hinstance, 'bild' + NGUinGrid.Cell[0,h].AsString);					
// EDIT:
Und natürlich die unter Schritt 4 so nennen, dass die Namen mit dem jeweiligen Statusbild übereinstimmen ;-).
Jerk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 251

Vista Ultimate, Ubuntu
Turbo Delphi 2006
BeitragVerfasst: Mi 08.10.08 12:47 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TfrmMain.NGUinGridSelectCell(Sender: TObject; ACol,
  ARow: Integer);
var i : Integer;
begin
  for i:= 1 to Image_Count do
      frmMain.FindComponent('Image'+inttostr(i)).Visible := false;
  frmMain.FindComponent('Image'+NGUinGrid.Cell[0,NGUinGrid.SelectedRow].AsString)).Visible := True;
end;





*edit* hrgs das passiert wenn man Abschicken nach 20 Minuten anclickt...


Zuletzt bearbeitet von Jerk am Mi 08.10.08 13:58, insgesamt 2-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 08.10.08 13:29 
user profile iconJerk hat folgendes geschrieben Zum zitierten Posting springen:
*edit* hrgs das passiert wenn man Abschicken nach 20 Minuten anclickt...
Aktiviere in deinem Profil AJAX ;-), dann werden neue Antworten automatisch angezeigt und ein Hinweis eingeblendet, auch wenn du noch nicht auf Abschicken geklickt hast ;-).